如何向Arraylist添加元素直到我想限制?

时间:2014-11-28 00:01:25

标签: java arraylist

我正在尝试解决问题,但是数组1000的限制和输入未知数字的问题。 我只是在ArrayList中添加元素直到大小为1000并停止添加元素。 我尝试添加元素以下代码,但这不是我的编程只是尝试。

添加元素0到14。 我怎样才能添加到10号?

public static void main(String[] args) {
    ArrayList<Integer> str=new ArrayList<Integer>();
    int y=str.size();
    do
    {
        for(int i=0; i<15; i++)
            str.add(i);
        System.out.println(str);
    }
    while(y!=10);          
}

2 个答案:

答案 0 :(得分:3)

您可以实现自己的从该类扩展的ArrayList版本,以保持您选择的最大值。

public class MyList<E> extends ArrayList<E> {

    private int maxSize; //maximum size of list

    @Override
    public boolean addAll(int index, Collection<? extends E> c) {
        //check if list + the new collection exceeds the limit size
        if(this.maxSize >= (this.size()+c.size())) {
            return super.addAll(index, c); 
        } else {
            return false;
        }
    }

    @Override
    public boolean addAll(Collection<? extends E> c) {
        //check if list + the new collection exceeds the limit size
        if(this.maxSize >= (this.size()+c.size())) { 
            return super.addAll(c); 
        } else {
            return false;
        }
    }

    @Override
    public void add(int index, E element) {
        if(this.maxSize > this.size()) { //check if the list is full
            super.add(index, element);
        }
    }

    @Override
    public boolean add(E e) {
        if(this.maxSize > this.size()) { //check if the list is full
            return super.add(e); 
        } else {
            return false; //don't add the element because the list is full.
        }
    }

    public int getMaxSize() {
        return maxSize;
    }

    public void setMaxSize(int maxSize) {
        this.maxSize = maxSize;
    }

}

然后你可以这样做:

MyList<Integer> test = new MyList<Integer>();
test.setMaxSize(10);
for(int i=0; i<15; i++) {
    test.add(i);
}

这会导致类似这样的事情:

test => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 1 :(得分:1)

我不确定你为什么在循环中使用循环,但根据我对你的问题的理解,这将是我的方法。

ArrayList<Integer> intList = new ArrayList<Integer>();

for (int i = 0; i < 15; i++) {
    if (intList.size() == 10) {
        break;
    }
    intList.add(i);
    System.out.println(intList.get(i));
}       

希望这可以为您提供线索,您可以找到解决问题的方法。

关心和快乐的编码。