[英]I have an ArrayList that contains an ArrayList<Integer>. I am having trouble removing elements from the ArrayList<Integer>
[英]Removing Integer from 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(//);
}
如果要刪除所有整數,只需執行以下操作會容易得多:
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
調用已移至循環之外。 一旦完成一次隨機播放,列表就已經是隨機的,因此再次隨機播放是沒有意義的...如果您確實想要“更好的”隨機播放,則可以在第一個循環之前執行7次調用shuffle
。
這樣吧
for (Iterator<Integer> iterator = list.iterator(); iterator.hasNext();) {
Integer s = iterator.next();
System.out.println(s);
iterator.remove();
}
我建議使用不允許重復的HashSet<Integer>
:
Set<Integer> set = new HashSet<Integer>();
您確定這不是您所需要的嗎?
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);
}
使用以下代碼
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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.