Java のArrayList deleteAll()メソッドは、その名前が示すように、適切なArrayListからすべての要素を削除しません。この操作が必要な場合は、ArrayList clear()メソッドを使用してください。clear()とは異なり、removeAll()メソッドは、別のコレクションに含まれる特定のリストからすべての項目を削除します。
RemoveAll() の構文と宣言
メソッドの構文は次のとおりです。
boolean removeAll(Collection<?> c)
ここで、c は、このリストから削除される要素を含むコレクションです。呼び出しの結果としてこのリストが変更された場合、このメソッドは true を返します。また、例外をスローすることもあります。 ClassCastException — このリストの要素のクラスが指定されたコレクションと互換性がない場合 NullPointerException — リストに null 要素が含まれ、指定されたコレクションが null 要素を許可しない場合、または指定されたコレクションが null の場合
RemoveAll() コード例
ソーシャル ネットワークに友達リストがあるとします。まあ、今のところいつものことです。また、あなたが几帳面な人で、ソーシャル ネットワークの友達に敵がいるかどうかに関係なく、悪意のある人をすべて特別な敵リストに登録しているとします。あなたは友人リストから悪意のある人をすべて削除することにしました。この場合には、 removeAll ()メソッドが間違いなく役立ちます。
import java.util.ArrayList;
import java.util.List;
public class RemoveAll2Example {
public static void main(String[] args) {
List<String> friendList = new ArrayList<String>();
// use add() method to add friends into your friend list
friendList.add("Alex");
friendList.add("Ivy");
friendList.add("Victor");
friendList.add("Peter");
friendList.add("Lenny");
friendList.add("Olly");
friendList.add("Stu");
friendList.add("Scott");
friendList.add("Olivia");
System.out.println("My old friend list: "+ friendList);
//create and add elements to foe list
List<String> foeList = new ArrayList<String>();
foeList.add("Ben");
foeList.add("Scott");
foeList.add("Chuck");
foeList.add("Olly");
foeList.add("Sam");
System.out.println("All my enemies: "+ foeList);
//remove all foeList elements from friendList list if they exist
friendList.removeAll(foeList);
System.out.println("new friend List without foes: "+ friendList);
}
}
出力は次のとおりです。
私の古い友人リスト: [アレックス、アイビー、ビクター、ピーター、レニー、オリー、スチュ、スコット、オリビア] 私の敵全員: [ベン、スコット、チャック、オリー、サム] 敵なしの新しい友人リスト: [アレックス、アイビー、ビクター、ピーター、レニー、スチュ、オリビア]
ご覧のとおり、このメソッドでは敵のオリーとスコットが削除されました。友達リストには敵のベン、チャック、サムはいませんでした。おそらく、 removeAll()メソッドの宣言に従って、別のリストの値だけでなく、ランダムなコレクションからも値をリストから削除できることに気づいたでしょう。HashMapを使用した例を見てみましょう。この場合、たとえば、値(removeAll (collection.values())またはキー(removeAll (collection.keySet()))で一致するレコードを削除することを明示的に示す必要があります。友達の女の子全員の名前を含むハッシュマップ。friendListには男の子だけを残す必要があります。(なぜこれが必要なのかはわかりませんが、それはわかりません)。古い友達リストの例に戻り、女の子のHasMap を作成し、 HashMapの値に名前が書かれているすべての女の子を友達リストから削除しましょう。
import java.util.*;
public class RemoveAll2Example {
public static void main(String[] args) {
// create an empty array list and full it up using Java 9 Factory Methods in one line
List<String> friendList= new ArrayList<>(List.of("Alex", "Ivy", "Victor", "Peter", "Lenny", "Olly", "Stu", "Scott", "Olivia"));
System.out.println("My old friend list: "+ friendList);
// Creating hashMap with girls keys and names also using using Java 9 Factory Methods
Map<Integer, String> girls = new HashMap<>(Map.of(1, "Olly", 2, "Olivia", 3, "Loe", 4, "Ivy"));
friendList.removeAll(girls.values());
System.out.println("boys only friendList: " + friendList);
}
}
出力は次のとおりです。
私の古い友達リスト: [アレックス、アイビー、ビクター、ピーター、レニー、オリー、スチュ、スコット、オリビア] 男の子のみの友達リスト: [アレックス、ビクター、ピーター、レニー、スチュ、スコット]
いくつかの特殊なケース
この記事の冒頭で、リストからすべての値を削除するには ArrayList clear()メソッドを使用する必要があると書きました。もちろん、これには、 removeAll()メソッドを使用することもできます。おそらく、これを行う方法はすでに推測されているでしょう。
myList.RemoveAll (myList);
例を挙げてみましょう。反社会的な気分になったら、友達リスト全体を空にしてみましょう。
import java.util.*;
public class RemoveAll2Example {
public static void main(String[] args) {
// create an empty array list and full it up using Java 9 Factory Methods in one line
List<String> friendList= new ArrayList<>(List.of("Alex", "Ivy", "Victor", "Peter", "Lenny", "Olly", "Stu", "Scott", "Olivia"));
System.out.println("My old friend list: "+ friendList);
friendList.removeAll(friendList);
System.out.println("my new empty friendlist...:" + friendList);
}
}
出力は次のとおりです。
男の子のみの友達リスト: [アレックス、ビクター、ピーター、レニー、スチュ、スコット] 私の新しい空の友達リスト...:[]
少なくとも、 ArrayList から null コレクション要素を削除してみます。
import java.util.*;
public class RemoveAll2Example {
public static void main(String[] args) {
List<String> friendList = new ArrayList<>(List.of("Alex", "Ivy", "Victor", "Peter", "Lenny", "Olly", "Stu", "Scott", "Olivia"));
System.out.println("My old friend list: "+ friendList);
// we are happy not to have foes
List<String> foeList = null;
//trying to remove all foeList elements from friendList list
friendList.removeAll(foeList);
System.out.println("my new friendlist:" + friendList);
}
}
RemoveAll()メソッド定義 によれば、出力に例外が発生します。
私の古い友人リスト: [Alex、Ivy、Victor、Peter、Lenny、Olly、Stu、Scott、Olivia] スレッド「メイン」の例外 java.lang.NullPointerException
さらに読む: |
---|
GO TO FULL VERSION