比较字符串ArrayList

时间:2016-01-22 06:54:00

标签: java arraylist

我有2个包含字符串的数组列表:

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

现在,如何将List1与List2进行比较,如果在List2中找到相同的单词,则删除List1中的单词。排序的单词(没有相同的单词)存储在另一个arraylist中。

结果应该是这样的:

List3 = [yes, ok, not]

4 个答案:

答案 0 :(得分:4)

如果要将结果存储在新列表中,则需要首先克隆List1:

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

ArrayList list3 = new ArrayList(list1);

然后使用removeAll

list3.removeAll(list2);

答案 1 :(得分:1)

ArrayList提供了删除另一个列表中存在的所有对象的方法。

参考Removing elements present in collection

在您的情况下list1.removeAll(list2)应解决您的问题

答案 2 :(得分:0)

您可以创建第三个列表,将两个列表添加到其中,并在其中找到第三个列表相同的单词。当你找到它们时,删除一个。所以你用等号()检查你的第三个列表。

答案 3 :(得分:0)

我想你不知道ArrayLists提供的removeAll(Collection c)方法,或只是想要另一种方法。

由于您提到需要从list1中删除重复的单词,请初始化HashSet并将list2中的所有值添加到Set中,如下所示,

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)时间内完成的,但需要一些辅助存储。如果这解决了您的问题,请告诉我。