```java
package com.demo._02动态数组;
import java.util.Arrays;
import java.util.Iterator;
import java.util.function.Consumer;
import java.util.stream.IntStream;
public class _2DynamicArrayDemo implements Iterable<Integer>{
private int size = 0 ;
private int capacity = 8 ;
private int[] array = {};
public void addLast(int elemnent) {
add(size, elemnent);
}
public void add(int index, int elemnent) {
checkAndGrow();
if(index >= 0 && index <= size) {
System.arraycopy(array, index, array, index+1, size - index);
}
array[index] = elemnent ;
size ++ ;
}
private void checkAndGrow() {
if(size == 0) {
array = new int[capacity] ;
}else if(size == capacity) {
capacity += capacity >> 1 ;
int[] newArray = new int[capacity];
System.arraycopy(array, 0 ,newArray, 0, size);
array = newArray ;
}
}
public int get(int index){
return array[index] ;
}
public void forEachTest(Consumer<Integer> consumer) {
for (int i = 0; i < size; i++) {
consumer.accept(array[i]);
}
}
@Override
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
int i = 0;
@Override
public boolean hasNext() {
return i < size;
}
@Override
public Integer next() {
return array[i++];
}
};
}
public IntStream stream() {
return IntStream.of(Arrays.copyOfRange(array, 0, size)) ;
}
public int remove(int index) {
int removed = array[index] ;
if(index < size -1) {
System.arraycopy(array , index+1, array, index, size - index -1);
}
size-- ;
return removed ;
}
@Override
public void forEach(Consumer<? super Integer> action) {
Iterable.super.forEach(action);
}
public static void main(String[] args) {
_2DynamicArrayDemo dynamicArrayDemo = new _2DynamicArrayDemo();
dynamicArrayDemo.addLast(1);
dynamicArrayDemo.addLast(2);
dynamicArrayDemo.addLast(3);
dynamicArrayDemo.addLast(4);
dynamicArrayDemo.addLast(5);
dynamicArrayDemo.addLast(6);
dynamicArrayDemo.addLast(7);
dynamicArrayDemo.addLast(8);
dynamicArrayDemo.addLast(9);
dynamicArrayDemo.addLast(10);
System.out.println("-----------------------------------");
dynamicArrayDemo.stream().forEach(ele -> System.out.println(ele));
}
}