JAvaでのループ削除コレクションリストの要素java削除コレクションリストの要素
2206 ワード
JAvaでのループ削除コレクションリストの要素java削除コレクションリストの要素
一、問題の説明
1、このような集合があると仮定し、コードは以下の通りである.
2、需要:各接続オブジェクトを.close()を実行する;方法
3、考え方:コレクション内の各要素を遍歴し、Connectionオブジェクトを取得し、close()メソッドを実行し、コレクションから要素を削除します.
二、forループの使用---サンプルコード
問題:コレクションの長さが減少し、変数indexが増加しているため、すべての要素に遍歴することはできません.サンプルコードでは、6番目の要素に削除すると、セット長は5で、indexも5で、forサイクル条件が満たされず、残りの要素は遍歴されません!
三、foreach---サンプルコードの使用
問題:例外の放出:java.util.C o n c u r r r e ntModificationException.foreachは遍歴時に集合の追加,削除操作を許さない.具体的な原因:https://blog.csdn.net/lipei1220/article/details/9028669
四、Iterator----サンプルコードの使用
問題にぶつかる:問題がなくて、完璧に解決します.^^、^^!(Iteratorオブジェクトのremove()メソッドで注意!
五、まとめ
1、forサイクルを使用すると、予想された結果に達することができず、エラーが発見しにくい.foreachは異常を投げ出す.
2、javaでコレクションループを削除する必要がある場合は、Iteratorのremove()メソッドを使用してください.
PS:コードが簡潔で分かりやすいようにconnListにConnectionオブジェクトを追加する手順は省略します.
参考資料:https://www.cnblogs.com/aspirant/p/7900854.html
一、問題の説明
1、このような集合があると仮定し、コードは以下の通りである.
List connList=new ArrayList(10);
2、需要:各接続オブジェクトを.close()を実行する;方法
3、考え方:コレクション内の各要素を遍歴し、Connectionオブジェクトを取得し、close()メソッドを実行し、コレクションから要素を削除します.
二、forループの使用---サンプルコード
public static void useFor() throws SQLException{
List connList=new ArrayList(10);
for (int index = 0; index < connList.size(); index++) {
Connection connection = connList.get(index);
connection.close();
connList.remove(connection);
}
}
問題:コレクションの長さが減少し、変数indexが増加しているため、すべての要素に遍歴することはできません.サンプルコードでは、6番目の要素に削除すると、セット長は5で、indexも5で、forサイクル条件が満たされず、残りの要素は遍歴されません!
三、foreach---サンプルコードの使用
public static void useForeach() throws SQLException{
List connList=new ArrayList(10);
for (Connection connection : connList) {
connection.close();
connList.remove(connection);
}
}
問題:例外の放出:java.util.C o n c u r r r e ntModificationException.foreachは遍歴時に集合の追加,削除操作を許さない.具体的な原因:https://blog.csdn.net/lipei1220/article/details/9028669
四、Iterator----サンプルコードの使用
public static void useIterator() throws SQLException{
List connList=new ArrayList(10);
Iterator iterator = connList.iterator();
while(iterator.hasNext()){
Connection connection = iterator.next();
connection.close();
iterator.remove();
}
}
問題にぶつかる:問題がなくて、完璧に解決します.^^、^^!(Iteratorオブジェクトのremove()メソッドで注意!
五、まとめ
1、forサイクルを使用すると、予想された結果に達することができず、エラーが発見しにくい.foreachは異常を投げ出す.
2、javaでコレクションループを削除する必要がある場合は、Iteratorのremove()メソッドを使用してください.
PS:コードが簡潔で分かりやすいようにconnListにConnectionオブジェクトを追加する手順は省略します.
参考資料:https://www.cnblogs.com/aspirant/p/7900854.html