Java 比较字符串数组列表
我有两个包含字符串的数组列表:Java 比较字符串数组列表,java,arraylist,Java,Arraylist,我有两个包含字符串的数组列表: List1 = [no, yes, ok, not] List2 = [no, but, vote, check] 现在,如果在列表2中找到相同的单词,我如何比较列表1和列表2,并删除列表1中的单词。已排序的单词(没有相同的单词)存储在另一个arraylist中 结果应该是这样的: List3 = [yes, ok, not] ArrayList提供了删除其他列表中存在的所有对象的方法 提及 在您的情况下,list1.removeAll(list2)应该可以解
List1 = [no, yes, ok, not]
List2 = [no, but, vote, check]
现在,如果在列表2中找到相同的单词,我如何比较列表1和列表2,并删除列表1中的单词。已排序的单词(没有相同的单词)存储在另一个arraylist中
结果应该是这样的:
List3 = [yes, ok, not]
ArrayList
提供了删除其他列表中存在的所有对象的方法
提及
在您的情况下,
list1.removeAll(list2)
应该可以解决您的问题ArrayList
提供了删除其他列表中存在的所有对象的方法
提及
在您的情况下,
list1.removeAll(list2)
应该可以解决您的问题如果要将结果存储在新列表中,您需要首先克隆list1:
ArrayList list3 = (ArrayList) list1.clone();
或
然后使用:
如果要将结果存储在新列表中,需要首先克隆List1:
ArrayList list3 = (ArrayList) list1.clone();
或
然后使用:
您可以创建第三个列表,将两个列表添加到其中,然后在第三个列表中找到相同的单词。找到它们后,删除一个。这样,您将使用equals()检查第三个列表。您可以创建第三个列表,将两个列表添加到其中,然后在第三个列表中找到相同的单词。找到它们后,删除一个。因此,您将使用equals()检查第三个列表。我想您不知道ArrayList的方法,或者只是想用其他方法来完成 因为您提到需要从列表1中删除重复的单词,所以初始化一个HashSet并将列表2中的所有值添加到该集中,如下所示
Set<String> set = new HashSet<String>();
for(String s: list2)
set.add(s);
这在O(n)时间内完成,但需要一些辅助存储。请让我知道这是否解决了你的问题 我想您不知道ArrayList的方法,或者只是想用另一种方法来实现它 因为您提到需要从列表1中删除重复的单词,所以初始化一个HashSet并将列表2中的所有值添加到该集中,如下所示
Set<String> set = new HashSet<String>();
for(String s: list2)
set.add(s);
这在O(n)时间内完成,但需要一些辅助存储。请让我知道这是否解决了你的问题
String[] list3 = new String[list1.size()];
list1.toArray(list3);
for(String s: list3)
if(!set.add(s))
list1.remove(s);