0

readAllNamesつまり、2つのarrayListがあり、もう1つはselectedNames.exであるanotherlistを取得したいと思いunSelectedNamesます。

List<Name>readAllNames = {"a","b","c","d","e","f","g"};
List<Name>selectedNames = {"a","b"};

どうすれば: unSelectedNames{"c"、 "d"、 "e"、 "f"、 "g"}を取得できreadAllNamesますか?

remove()Andを使用せずにremoveAll()

4

6 に答える 6

3
List<String> unread = new ArrayList<String>();
for(String s : readAllNames ){
    if(!selectedNames.contains(s))
        unread.add(s);
}
于 2013-02-01T12:51:26.530 に答える
2

使用したくない場合はremove()removeAll()いつでも繰り返してreadAllNames、要素ごとに、要素が組み込まれているかどうかを確認contains()selectedNames、そうでない場合はに追加することができunselectedNamesます。

しかし、実際removeAll()には;を使用する必要があります。クラスを見せてください。Nameおそらく何が問題なのかを教えてくれます(ヒント:操作に関するセマンティクスequals()を読んでください)。hashCode()Collection

乾杯、

于 2013-02-01T12:50:48.337 に答える
0
ArrayList<Name> unselectedName = new ArrayList<String>();
for(Name s: readAllNames){
    if(!selectedNames.contains(s)){
        unselectedName.add(s);
    }
}
于 2013-02-01T12:57:14.737 に答える
0

これを試して

List<Name>readAllNames = {"a","b","c","d","e","f","g"};
List<Name>selectedNames = {"a","b"};
List<Name>unselectedNames = null;
Collections.copy(unselectedNames , readAllNames);
unselectedNames.removeAll(selectedNames);
于 2013-02-01T13:11:50.967 に答える
0

ソースコードを見て、それをremove()使ってみませんか?

于 2013-02-01T12:46:24.793 に答える
0

これを試して:

List<String> unSelectedNames = new ArrayList<String>(readAllNames);
unSelectedNames.removeAll(selectedNames);

オリジナルに触れる必要はなくList、そのコピーだけです。

于 2013-02-01T13:02:26.603 に答える