当前位置: 首页 > 知识库问答 >
问题:

如何在java中从列表中选择重复值?

松锐藻
2023-03-14

例如,我的列表包含{4,6,6,7,7,8},我想要最终结果= {6,6,7,7}

一种方法是遍历列表并消除唯一值(本例中为4,8)。

除了在列表中循环之外,还有其他有效的方法吗?我问这个问题是因为我正在工作的列表非常大?我的密码是

List<Long> duplicate = new ArrayList();
for (int i = 0; i < list.size(); i++) {
     Long item = (Long) list.get(i);
     if (!duplicate.contains(item)) {
          duplicate.add(item);
         }
     }

共有3个答案

闻人志
2023-03-14
List<Number> inputList = Arrays.asList(4, 6, 6, 7, 7, 8);
List<Number> result = new ArrayList<Number>();
for(Number num : inputList) {
   if(Collections.frequency(inputList, num) > 1) {
       result.add(num);
   }
}

我不确定效率,但我发现代码易于阅读(这应该是首选。

编辑:更改<code>列表。newArrayList()到<code>新ArrayList

慕宏儒
2023-03-14

除了在列表中循环之外,还有其他有效的方法吗?

你可以雇一个魔法精灵,让它为你做这件事。如果不进行循环,你会怎么做呢?如果你不遍历列表,你甚至不能看到元素。这就像你想在不看那些数字的情况下把一大堆数字加起来。对元素求和比搜索重复元素或唯一元素容易得多。一般来说,代码97%的工作是遍历列表和数据,并对其进行处理和更新。

所以,说,你必须循环。现在你可能想选择最有效的方法。我想到了一些方法:

  • 对所有数字进行排序,然后只循环一次以查找重复项(因为它们将彼此相邻)。但是,请记住,排序算法也会循环遍历数据。
  • 对于列表中的每个元素,检查是否有另一个具有相同值的元素。(这就是您的做法。这意味着您在彼此内部有两个循环。(当然包含在列表中循环。)
公西兴业
2023-03-14

到目前为止,一些好的答案,但另一个选择只是为了好玩。遍历列表,尝试将每个数字放入一个集合中,例如HashSet。如果add方法返回false,您知道该数字是重复的,应该放入重复列表中。

编辑:像这样的东西应该可以做到

Set<Number> unique = new HashSet<>();
List<Number> duplicates = new ArrayList<>();
for( Number n : inputList ) {
    if( !unique.add( n ) ) {
        duplicates.add( n );
    }
}
 类似资料:
  • 这是我得到的一个列表的(部分)dput()输出。 它要么包含字符向量,要么包含字符(0)…我只想选择写为字符(0)的元素,但我不知道如何选择。有人能帮我吗?

  • 如果数据库中的数据为是或否,如何选中复选框,我尝试使用attr函数,但没有成功 这是我的html

  • 我有一个问题...在表1中,我有一个id,我必须比较表2中的id,然后获取表2中的第二个id,并将其与表3进行比较,得到一个数据作为结果。例子 如果我查找id 1,结果必须是Sea。如果我查找id 2,结果必须是Hello。 谢谢!

  • 问题内容: 我想从列表中删除重复项,但我无法正常工作: 问题答案: 如果该代码不起作用,则可能是你未在该类上正确实现。 大概有一些钥匙(我们称之为)可以唯一地标识一个客户。例如 的适当定义equals(Object)如下所示: 为了完整起见,你还应该实现hashCode两个Customer相等的对象将返回相同的哈希值。hashCode上述定义的匹配项为equals: 还值得注意的是,如果列表很大,

  • 问题内容: 我想选择,,从多个选择其中有10个选项。我只想选择这三个选项。 HTML代码: selenium键代码: 我尝试使用此代码。使用此代码,我可以选择第一个选项,即“ P0_ENGLISH”。但是,选择第一个选项后,我得到一个错误: 问题答案: 要从 Multi Select 元素中选择多个 选项 ,可以使用 ActionChains 模拟 Control单击* ,如下所示: *

  • 我有一些蛋白质结构数据,我已将其转换为Pandas DataFrame。 有一列对应于氨基酸残基,标记为< code>resi。 我想选择<code>resi<code>值出现在其他列表中的所有行。现在,我可以使用以下方法选择存在的行: 如何选择行,以便包含疏水残基的行都被选中,而不在数据帧选择器中写入更多条件?据我所见,Pandas关于字符串方法的文档不允许我传递值列表。