亂序集合,遍歷刪除時避免 併發修改異常

2022-09-21 14:39:13 字數 1690 閱讀 2035

將1-100個數字,打亂順序放到集合中,並刪掉奇數。

步驟1:把數字放到集合中,建立集合,注意要泛型。for迴圈是1到100。

步驟2:集合亂序,方法:collections.shuffle(傳入的集合)。 一般帶s的是工具類。 用到collections(帶s)集合工具類中的shuffle(洗牌)方法,其內部是演算法。

注意,shuffle傳入的list1集合,但是後面list1就變化了,即引數發生變化。而這種引數發生變化的,我們稱之此

方法有***。***一般是我們寫**的時候並不是我們想起到的作用,所以,自己設計方法的時候要避免有方

法的***。

步驟3:邊遍歷變刪除。

package com.lianxi1019;

import j**a.util.arraylist;

import j**a.util.collections;

import j**a.util.iterator;

import j**a.util.list;

public class dm01

collections.shuffle(list1);

// 用迭代器遍歷

iteratoriterator1 = list1.iterator();

while (iterator1.hasnext())

}system.out.println("迭代器: " + list1 + " ,和陣列大小: " + list1.size());

// 建立亂序集合list2

listlist2 = new arraylist<>();

for (int i = 1; i <= 100; i++)

collections.shuffle(list2);

// 用迭代器簡化來遍歷

list2.removeif(integer -> integer % 2 == 1);

system.out.println("迭代器簡化: " + list2 + " ,和陣列大小: " + list2.size());

// 建立亂序集合list03

listlist3 = new arraylist<>();

for (int i = 1; i <= 100; i++)

collections.shuffle(list3);

// 用for i 倒著遍歷

for (int i = list3.size() - 1; i > -1; i--)

}system.out.println("fori倒著: " + list3 + " ,和陣列大小: " + list3.size());

}}

如果用list.remove來 邊遍歷邊刪除,會出現「併發修改異常」。

list集合是允許邊遍歷邊刪除的,有兩種做法:

迭代器遍歷刪除,就是上面的做法

for i 迴圈遍歷刪除,但是可能會出現「下標越界異常」,所以應該倒著遍歷。

重點應該是邊遍歷邊刪除。

使用iterator迭代器遍歷 ,會出現這個警告,提示是該迴圈可以用collection.removeif替換 ,也就是說迭代器遍歷可以寫成:list1.removeif(integer -> integer % 2 == 1);而此方法返回的是boolean。

list.remove方法是有過載的,1.按下標刪除;2.按元素刪除。

List集合遍歷刪除元素

j a三種遍歷如何進行list的遍歷刪除 1 for迴圈 常見錯誤寫法 由於下標問題達不到想要效果 for int i 0 i應該改為 倒序操作避免下標問題 int size list.size for int i size 1 i 0 i 2 增強for迴圈 foreach迴圈 常見錯誤 會丟擲c...

遍歷Python列表時安全刪除

今天在做工作時,需要遍歷乙個列表把其中不符合要求的刪除掉 於是想到,在遍歷列表的同時刪除元素會不會引起不安全 然後上網搜了一些材料 在這裡總結一下 例如 a 1,2,3,4,5 for i in a if i 4 a.remove i print a上述程式中,我們本來想刪除列表中不等於4的數字 但...

Python遍歷列表時刪除元素

本文首發於我的個人部落格suixin s blogpython的for迴圈可以遍歷乙個列表,但若需要同時將符合條件的元素刪除時,則會出錯。s 1 2,3 4,1 1 s1 s for i in s1 if i 1 s1.remove i print s1 輸出 2,3,4,1 另一種 s2 s fo...