数据结构 -- 数组

本篇文章主要是对数组的实操,所以对数组的概念不在赘述,了解更多数组相关可参照链接 Java数组的概念及使用-CSDN博客

1、DynamicArray类

package com.hh.algorithm.array;import java.util.Arrays;
import java.util.Iterator;
import java.util.function.Consumer;
import java.util.stream.IntStream;public class DynamicArray implements Iterable<Integer> {private int size = 0;  //数组大小private int capacity = 8;  //容量private int[] array = {};//添加元素到数组最后public void addLast(int element) {
//        array[size] = element;
//        size++;add(size, element);}//添加元素到数组指定索引为止public void add(int index, int element) {if (index > 0 && index < size) {System.arraycopy(array, index,array, index + 1, size - index);}array[index] = element;size++;}//指定索引查找public int get(int index) {return array[index];}//遍历方法一:Consumer遍历public void foreach(Consumer<Integer> consumer) {/*for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}*/for (int i = 0; i < size; i++) {consumer.accept(array[i]);}}//遍历方法二:iterator迭代器遍历@Overridepublic Iterator<Integer> iterator() {return new Iterator<Integer>() {int i = 0;@Overridepublic boolean hasNext() {return i < size;}@Overridepublic Integer next() {return array[i++];}};}//遍历方法三:Consumer遍历public IntStream stream() {return IntStream.of(Arrays.copyOfRange(array, 0, size));}//删除索引元素public int remove(int index) {int remove = array[index];if (index < size - 1) {System.arraycopy(array, index + 1,array, index, size - index - 1);}size--;return remove;}//扩容数组public void checkAndGrew(int index) {//容量检测if (size == 0){array = new int[capacity];}else if (size == capacity){// 容量扩容,1.5,1.618,2倍capacity += capacity >> 1;int[] newArray = new int[capacity];System.arraycopy(array,0,newArray,0, size);array = newArray;}}
}

2、DynamicArrayTest测试类

package com.hh.algorithm.array;import org.testng.annotations.Test;import java.util.function.Consumer;public class DynamicArrayTest {//添加元素@Testpublic void test() {DynamicArray dynamicArray = new DynamicArray();dynamicArray.addLast(1);dynamicArray.addLast(2);dynamicArray.addLast(3);dynamicArray.addLast(4);dynamicArray.addLast(5);}//测试遍历@Testpublic void test1() {DynamicArray dynamicArray = new DynamicArray();dynamicArray.addLast(1);dynamicArray.addLast(2);dynamicArray.addLast(3);dynamicArray.addLast(4);dynamicArray.addLast(5);//方式一dynamicArray.get(1);//方式二dynamicArray.foreach(new Consumer<Integer>() {@Overridepublic void accept(Integer integer) {System.out.println(integer);}});//方式三for (Integer i : dynamicArray) { //自动执行hasNext和nextSystem.out.println(i);}//方式四dynamicArray.stream().forEach(element ->{System.out.println(element);});}
}

运行结果

 


 

本文为学习笔记,所参考文章均已附上链接,若有疑问请私信!

创作不易,如果对你有点帮助的话麻烦点个赞支持一下!

新手小白,欢迎留言指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/621651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB源码-第190期】基于matlab的32QAM系统相位偏移估计EOS算法仿真,对比补偿前后的星座图误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 引言 M-QAM调制技术的重要性 现代通信系统追求的是更高的数据传输速率和更有效的频谱利用率。M-QAM调制技术&#xff0c;作为一种高效的调制方案&#xff0c;能够通过在相同的带宽条件下传输更多的数据位来满足这一需求…

设计模式代码实战-组合模式

1、问题描述 小明所在的公司内部有多个部门&#xff0c;每个部门下可能有不同的子部门或者员工。 请你设计一个组合模式来管理这些部门和员工&#xff0c;实现对公司组织结构的统一操作。部门和员工都具有一个通用的接口&#xff0c;可以获取他们的名称以及展示公司组织结构。…

【练习】二分查找

1、704 &#xff08;1&#xff09;题目描述 &#xff08;2&#xff09;代码实现 package com.hh.practice.leetcode.array.demo_02;public class BinarySearch_704 {public int search(int[] nums, int target) {int i 0,j nums.length -1;while (i < j){int mid (ij) &…

企业网络日益突出的难题与SD-WAN解决方案

随着企业规模的迅速扩张和数字化转型的深入推进&#xff0c;企业在全球范围内需要实现总部、分支机构、门店、数据中心、云等地点的网络互联、数据传输和应用加速。SD-WAN作为当今主流解决方案&#xff0c;在网络效率、传输质量、灵活性和成本等方面远远超越传统的互联网、专线…

利用国产库libhv动手写一个web_server界面(二)

目录 一、配置参数解析与响应 1.读取参数 2.设置参数 3.恢复默认参数 二、整体的界面实现以及交互效果 三、关于yaml文件乱码问题解决 四、参考文章 一、配置参数解析与响应 使用cJSON解析库&#xff0c;解析接收到的JSON数据字段&#xff0c;区别接收到的配置参数是请…

四川易点慧电子商务抖音小店安全:护航您的在线交易之旅

在数字化浪潮席卷全球的今天&#xff0c;电子商务已经成为人们日常生活的重要组成部分。四川易点慧电子商务抖音小店作为新兴的电商平台&#xff0c;以其便捷、高效的特点吸引了众多消费者的目光。然而&#xff0c;随着网络交易的日益频繁&#xff0c;安全问题也日益凸显。本文…

论文笔记:Time Travel in LLMs: Tracing Data Contamination in Large Language Models

iclr 2024 spotlight reviewer评分 688 1 intro 论文认为许多下游任务&#xff08;例如&#xff0c;总结、自然语言推理、文本分类&#xff09;上观察到的LLMs印象深刻的表现可能因数据污染而被夸大 所谓数据污染&#xff0c;即这些下游任务的测试数据出现在LLMs的预训练数据…

Redis客户端介绍及安装

Redis客户端 安装完成Redis&#xff0c;我们就可以操作Redis&#xff0c;实现数据的CRUD了。这需要用到Redis客户端&#xff0c;包括&#xff1a; 命令行客户端图形化桌面客户端编程客户端 1.Redis命令行客户端 Redis安装完成后就自带了命令行客户端&#xff1a;redis-cli&…

并发 MiniHttp 服务器

项目需求 实现一个http 服务器项目&#xff0c;服务器启动后监听80端口的tcp 连接&#xff0c;当用户通过任意一款浏览器访问我们的http服务器&#xff0c;http服务器会查找用户访问的html页面是否存在&#xff0c;如果存在则通过http 协议响应客户端的请求&#xff0c;把页面…

ARM看门狗定时器

作用 在S3C2440A中&#xff0c;看门狗定时器的作用是当由于噪声和系统错误引起的故障干扰时恢复控制器的工作。 也就是说&#xff0c;系统内部的看门狗定时器需要在指定时间内向一个特殊的寄存器内写入一个数值&#xff0c;俗称喂狗。 如果喂狗的时间过了&#xff0c;那么看门…

基于PyTorch神经网络进行温度预测——基于jupyter实现

导入环境 import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import torch.optim as optim import warnings warnings.filterwarnings("ignore") %matplotlib inline读取文件 ### 读取数据文件 features pd.read_csv(temps.…

数据可视化-ECharts Html项目实战(12)

在之前的文章中&#xff0c;我们深入学习ECharts特殊图表中的矩形树图以及Echarts中高级功能的多图表联动。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 数…