Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较字符串数组列表_Java_Arraylist - Fatal编程技术网

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);