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

在Java8[duplicate]中使用lambda函数删除重复项

归松
2023-03-14

我需要从String的ArrayList中删除重复项,而不考虑大小写。对于情商:

List list = Lists.newArrayList("Luke","luke");// it's guava's method
list.stream().distinct();

上面的distince()不会提供任何帮助,因为它工作在将返回false的equals方法上。有没有其他方法可以做以下事情:

list.stream().distinct((a,b)->a.equalsIgnoreCase(b)).collect(..);

共有1个答案

邬浩涆
2023-03-14

这里有一种方法。我假设重复项不需要彼此紧挨着,所以我不得不使用一个哈希集来保持它为O(n)。另外,必须同意一个大小写(用小写)。

public static void main(String[] args) {
    List<String> list = Arrays.asList("Luke", "tony", "Tony", "luke");
    Set<String> set = new HashSet<>();
    list.stream().map(s -> s.toLowerCase()).filter(s -> !set.contains(s)).forEach(set::add);
    System.out.println(set);
}
 类似资料:
  • 问题内容: 我遇到了一个问题Python- 仅通过使用filter和lambda 删除列表中的重复项,OP询问如何使用独占和函数从Python列表中删除重复项。 这让我感到奇怪,从理论的角度来看,是否可以仅使用函数从Python列表中删除重复项? 如果是这样,我们该怎么做? 在这种情况下,“删除重复项”是指“仅使原始列表中存在的每个元素出现一次”,因此应变为。 另外,目标是只编写一个,因此代码将像

  • 我有一个这样的专栏: 我希望专栏看起来像这样: 只希望保留重复记录的第一个或最后一个。 目前,我使用的是: 但它不起作用。我错过了什么吗?

  • 我下面有一个类,想删除包含同名的重复人,如何使用Java8 Lambda,预计列表包含下面的p1、p3。

  • 问题内容: 我有一个像这样的json数据: 从中,我必须使用删除一个重复的条目,与情况相同, 结果如下: 怎么可能 问题答案:

  • 如果我不使用' a '和' b '变量,一切正常,否则,C返回: 错误:无法转换“main()::” 注意:初始化'void f(int, void(*)(int))'的参数2

  • 我有数组的电子邮件和ID,所以我想删除重复的元素谁有类似的ID的。 例子: 现在我需要删除具有ID的重复元素是常见的。从某种意义上说,我期待最终的阵列是