Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List - Fatal编程技术网

Java是否将重复项从列表存储区删除到其他列表?

Java是否将重复项从列表存储区删除到其他列表?,java,list,Java,List,我有一个包含多个重复单词的单词列表。我想提取重复的单词并将它们存储在另一个列表中(保持原始列表的完整性) 我试着像你在下面看到的那样迭代列表,但逻辑上失败了,因为每个“dupe”在某个点上都等于primary。我真的很想遍历列表,并为列表中的每个字符串检查列表中的所有其他字符串是否重复 列表界面中是否有允许这种比较的方法 参考列表1是一个字符串列表 for(String primary: list1){ for(String dupe: list1){ if(primar

我有一个包含多个重复单词的单词列表。我想提取重复的单词并将它们存储在另一个列表中(保持原始列表的完整性)

我试着像你在下面看到的那样迭代列表,但逻辑上失败了,因为每个“dupe”在某个点上都等于primary。我真的很想遍历列表,并为列表中的每个字符串检查列表中的所有其他字符串是否重复

列表界面中是否有允许这种比较的方法

参考列表1是一个字符串列表

for(String primary: list1){
    for(String dupe: list1){
        if(primary.equals(dupe)){
            System.out.print(primary + " " + dupe);
            ds3.add(primary);
        }
    }
}
编辑:


我应该注意到,我知道集合不允许重复,但我试图做的是获取重复。我想找到它们,把它们拿出来以后再使用。我不是想根除它们。

考虑使用一种新的方法。“不包含重复元素的集合。”

请考虑使用。“不包含重复元素的集合。”

删除重复元素的最简单方法是将所有元素添加到
集合中:

Set<String> nodups = new LinkedHashSet<String>(list1);
List<String> ds3 = new ArrayList<String>(nodups);
通过以上步骤,很容易找到重复的元素:

List<String> ds3 = new ArrayList<String>();
for (Map.Entry<String, Integer> entry : counter.entrySet())
    if (entry.getValue() > 1)
        ds3.add(entry.getKey());
Set<String> seen = new HashSet<String>();
List<String> ds3 = new ArrayList<String>();
for (String s : list1) {
    if (seen.contains(s))
        ds3.add(s);
    else
        seen.add(s);
}

删除重复项的最简单方法是将所有元素添加到
集中

Set<String> nodups = new LinkedHashSet<String>(list1);
List<String> ds3 = new ArrayList<String>(nodups);
通过以上步骤,很容易找到重复的元素:

List<String> ds3 = new ArrayList<String>();
for (Map.Entry<String, Integer> entry : counter.entrySet())
    if (entry.getValue() > 1)
        ds3.add(entry.getKey());
Set<String> seen = new HashSet<String>();
List<String> ds3 = new ArrayList<String>();
for (String s : list1) {
    if (seen.contains(s))
        ds3.add(s);
    else
        seen.add(s);
}
其目的是提取副本,而不是完全丢失它们

列表=
Set Set=newlinkedhashset();//维持秩序
List dups=new ArrayList();//可能是重复的
用于(字符串s:列表)
如果(!set.add)重复添加;
其目的是提取副本,而不是完全丢失它们

列表=
Set Set=newlinkedhashset();//维持秩序
List dups=new ArrayList();//可能是重复的
用于(字符串s:列表)
如果(!set.add)重复添加;

要仅获取重复项(而不是从列表中消除重复项),您可以使用集合作为访问前一个字符串的临时查找表:

Set<String> tmp = new HashSet<String>();
for(String primary: list1){
  if(tmp.contains(primary)) {
    // primary is a duplicate
  }
  tmp.add(primary);
}
Set tmp=newhashset();
用于(字符串主:列表1){
如果(tmp.contains(主)){
//主要是重复的
}
tmp.add(主要);
}

要仅获取重复项(而不是从列表中消除重复项),您可以使用集合作为访问前一个字符串的临时查找表:

Set<String> tmp = new HashSet<String>();
for(String primary: list1){
  if(tmp.contains(primary)) {
    // primary is a duplicate
  }
  tmp.add(primary);
}
Set tmp=newhashset();
用于(字符串主:列表1){
如果(tmp.contains(主)){
//主要是重复的
}
tmp.add(主要);
}

使用基本for循环并将嵌套循环的起始索引设置为周围循环的当前索引+1。使用基本for循环并将嵌套循环的起始索引设置为周围循环的当前索引+1。是,但这样做会丢失重复项。那我就没有副本了。其目的是提取副本,而不是完全丢失它们@ÓscarLópez您可以通过使用
LinkedHashSet
LinkedHashMap
@保留插入顺序,对!我编辑了我的答案,谢谢剩下的:)是的,但是这样做会丢失重复的答案。那我就没有副本了。其目的是提取副本,而不是完全丢失它们@ÓscarLópez您可以通过使用
LinkedHashSet
LinkedHashMap
@保留插入顺序,对!我编辑了我的答案,谢谢剩下的:)谢谢!这是第一个真正理解我的问题的回答。@leigero我的优势是首先阅读了你的评论;)非常感谢。这是第一个真正理解我的问题的回答。@leigero我的优势是首先阅读了你的评论;)