从Arraylist中删除整数

时间:2013-10-22 17:44:13

标签: java random arraylist

我正在尝试删除我的Bingo程序的重复项,所以我创建了一个ArrayList,我想删除循环中打印出来的整数。我认为我使用的循环是错误的,但我不确定。

             List<Integer> list = new ArrayList<Integer>();
                for(int i = 1; i <= 75; i++){
                    list.add(i);
                }

                for (Integer s : list) {
                    Collections.shuffle(list);
                    System.out.println(s);
                    list.remove(//);
                }

5 个答案:

答案 0 :(得分:2)

如果要删除所有整数,那么执行此操作会容易得多:

Collections.shuffle(list);
for (Integer s : list) {
    System.out.println(s);
}
list = new ArrayList<Integer>();

或者,如果你真的想保留相同的列表实例:

Collections.shuffle(list);
for (Integer s : list) {
    System.out.println(s);
}
list.clear();

创建新的数组列表更有效,因为它允许垃圾收集器只收集整个旧列表,而不是逐个删除条目。但是,如果您对同一个实例有多个引用,那么您需要实际清除该列表。

另请注意,shuffle调用已移出循环。一旦你完成一次洗牌,列表已经随机化了,所以再次洗牌有点毫无意义......如果你真的想要一个“更好”的洗牌,你可以做一些事情,比如在第一次之前调用shuffle 7次循环。

答案 1 :(得分:2)

这样做。

for (Iterator<Integer> iterator = list.iterator(); iterator.hasNext();) {
      Integer s = iterator.next();
      System.out.println(s);
      iterator.remove();
 }

答案 2 :(得分:1)

我建议使用不允许重复的HashSet<Integer>

Set<Integer> set = new HashSet<Integer>();

答案 3 :(得分:1)

你确定这不是你需要的吗?

private static final int NUM_BALLS = 75;

List<Integer> list = new ArrayList<Integer>();
for(int i = 1; i <= NUM_BALLS; i++){
    list.add(i);
}

Collections.shuffle(list);

while (!list.isEmpty()) {
    Integer s = list.remove(list.size() - 1); // for better performance as noted by @Holger
    System.out.println(s);
}

答案 4 :(得分:1)

使用以下代码

    Random generate = new Random();
    Set<Integer> set = new HashSet<Integer>();
    for(int i = 1; i <= 75; i++){
       set.add(generate.nextInt(75));
    }
    Iterator<Integer> iterator = set.iterator();
    while(iterator.hasNext()){
        System.out.println(iterator.next());
        iterator.remove();
    }
    System.out.print(set.size());