import java.util.Arrays;
import java.util.Iterator;
import java.util.function.Consumer;
import java.util.stream.IntStream;
public class Array implements Iterable<Integer>{
private int size = 0;
private int count = 8;
private int[] array = {};
public Array() {
}
//添加元素
public void addLast(int value) {
start();
array[size++] = value;
}
public int getSize() {
return size;
}
//插入数据
public void add(int index, int value) {
start();
if(index <= size) {
System.arraycopy(array, index, array, index + 1, size - index);
array[index] = value;
size++;
}
}
//创建或扩容数组
public void start(){
if(size == 0){
array = new int[count];
}
if(size == count){
array = Arrays.copyOf(array, array.length * 2);
}
}
//迭代器遍历数组
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
int index = 0;
@Override
public boolean hasNext() {
return index < size;
}
@Override
public Integer next() {
return array[index++];
}
};
}
//自定义方法
public void foreach(Consumer<? super Integer> consumer) {
for(int i = 0; i < size; i++){
consumer.accept(array[i]);
}
}
//Stream流遍历,a.stream().limit(a.getSize()).forEach(element -> System.out.println(element));
public IntStream stream() {
return Arrays.stream(array);
}
//删除数据
public void delete(int index){
System.arraycopy(array, index + 1, array, index,size - index - 1);
size--;
}
}
Java有关动态数组的建立,添加,插入,删除,遍历以及自动扩容的实现


被折叠的 条评论
为什么被折叠?



