我的逻辑中有任何缺陷吗?使用列表Java

时间:2014-04-22 14:30:33

标签: java

我有一个名为List<Integer> busy的Java列表:

哪个有

java.util.List:&#34; [17,21,36,22,35,23,10,6,9,11,2,19,7]&#34;

现在,我有一个名为Int Capacity

的变量
Capacity = 30;

我想在名为List<Integer> totallist的新列表中创建每个容量记录; 应该是:

java.util.List : "[1,2,3,4,5,6,7 uptill 30]"

我做的事情是:

List<Integer> totallist = new ArrayList<>(capacity);

            for (int i = 0; i < totallist.size(); i++) {
                totallist.add(i); 
            }  

我怀疑这是否正确!

下一步是,我有另一个名为&#34; 列表免费&#34;

哪个应该给我总数中的元素减去繁忙列表中的元素。

我做了类似的事情:

List<Integer> free = new ArrayList<>(totallist);
free.removeAll(busy);

逻辑是否正确?

2 个答案:

答案 0 :(得分:2)

嗯,我看到的第一个问题是List.size()是指你添加到List中的对象数,最初为零,直到你在初始化后实际添加项目为止。你应该这样做:

for (int i = 1; i <= Capacity; i++) {
                totallist.add(i); 
            } 

代替。

编辑: 至于你问题的后半部分,你问的问题并不清楚。您是说要删除一个列表中包含的所有项目,如果另一个列表中还包含这些项目吗?

答案 1 :(得分:0)

我不确定您要做什么,但是,在填写totallist时,您应该执行以下操作:

        int capacity = 30;
        List<Integer> totallist = new ArrayList<Integer>(capacity);

        for (int i = 1; i <= capacity; i++) {
            totallist.add(i); 
        }

它将从1到30填写您的列表,如下所示:

java.util.List : "[1,2,3,4,5,6,7 uptill 30]"

然而,使用Set而不是List更好。在上一部分中,您将从列表free中的列表busy中删除所有这些数字。我不知道你在最后一部分想做什么。