2016-01-22 167 views
0

我有一個包含字符串2數組列表:比較字符串的ArrayList

List1 = [no, yes, ok, not] 
List2 = [no, but, vote, check] 

現在,我該如何比較列表1與列表2並刪除列表1的話,如果同一個詞在列表2中。排序的詞(沒有相同的詞)存儲在另一個數組列表中。

結果應該是這樣的:

List3 = [yes, ok, not] 

回答

4

如果你希望將結果保存在一個新的列表,你需要先克隆列表1:

ArrayList list3 = (ArrayList) list1.clone(); 

ArrayList list3 = new ArrayList(list1); 

然後用removeAll

list3.removeAll(list2); 
0

您可以創建第三個列表,添加到您的這兩個列表,並發現它第三個列表同樣的話。當你找到它們時,刪除一個。所以你會用equals()來檢查你的第三個列表。

0

我想你並不瞭解ArrayList的removeAll(Collection c)方法,或者只是想要另一種方法。

既然你提到,你需要從列表1中刪除重複的話,初始化一個HashSet和list2中添加所有值的設置,像這樣,

Set<String> set = new HashSet<String>(); 
for(String s: list2) 
    set.add(s); 

現在,做相同的克隆的list1,注意從list1中刪除字符串。

String[] list3 = new String[list1.size()]; 
list1.toArray(list3); 
for(String s: list3) 
    if(!set.add(s)) 
     list1.remove(s); 

這是在O(n)時間完成的,但需要一些輔助存儲。請讓我知道這是否解決了您的問題。