Java-动态数组

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有关动态数组的建立,添加,插入,删除,遍历以及自动扩容的实现

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值