使用Java Lambda函数从Java列表中删除重复的数字

天空

我正在尝试使用java lambda表达式删除重复项,而无需使用distinct。

这是我的解决方案:

        public static List<Integer> dropDuplicates(List<Integer> list) {
        return list
                .stream()
                .collect(Collectors.groupingBy(Function.identity()))
                .values()
                .stream()
                .map(v -> v.stream().findFirst().get())
                .collect(toList());
    }

它工作正常,但是元素的顺序已更改。

      List<Integer> list = Arrays.asList(11, 12, 1, 2, 2, 3,12,  4, 13,  4, 13);
       output => [1, 2, 3, 4, 11, 12, 13]

我对Java函数编程有点陌生(也许这是愚蠢的问题)。有什么方法可以保留列表元素的顺序或其他更好的方法吗?

亚伦人

您的问题来自于Map界面在元素顺序方面没有任何保证的事实。如果您关心订单,则需要确保使用了有序的实现(例如LinkedHashMap)。以下实现保留了该顺序:

public static List<Integer> dropDuplicates(List<Integer> list) {
    return list
            .stream()
            .collect(Collectors.groupingBy(Function.identity(), LinkedHashMap::new, Collectors.toList()))
            .values()
            .stream()
            .map(v -> v.stream().findFirst().get())
            .collect(Collectors.toList());
}

当然,使用distinct()或欧内斯特建议的方法将是一种更简单的解决方案。只是想以您到目前为止所做的为基础。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Java列表中删除重复的对象

来自分类Dev

从Java中的数组列表中删除连续的重复项

来自分类Dev

从Java中的数组列表中删除连续的重复元素(使用Panache)

来自分类Dev

如何在Java中删除重复的列表遍历

来自分类Dev

java-从列表中删除几乎重复的内容

来自分类Dev

Java。如何从两个列表中删除重复的对象

来自分类Dev

如何在Java中删除重复的列表遍历

来自分类Dev

java-从列表中删除几乎重复的内容

来自分类Dev

在Java 8中使用Lambda表达式打印列表(无重复项)

来自分类Dev

在Java 8中使用Lambda表达式打印列表(无重复项)

来自分类Dev

Java列表中的数字

来自分类Dev

使用列表删除Java中重复元素的简单程序

来自分类Dev

Java - 如何删除数组列表中的最低数字?

来自分类Dev

有没有办法在使用流在Java中8列表凝聚重复的数字?

来自分类Dev

Java使用循环从数组中删除重复项

来自分类Dev

使用Distinct删除列表中的重复项

来自分类Dev

如何使用Java组合列表中没有重复的元素

来自分类常见问题

Java中的lambda函数树?

来自分类Dev

Java 中的 AWS Lambda 函数

来自分类Dev

如何从列表中删除使用的数字

来自分类Dev

如何从列表中删除使用的数字

来自分类常见问题

根据Java 8中的属性从对象列表中删除重复项

来自分类Dev

如何从列表中删除重复项而无需在Java中重新排序?

来自分类Dev

从Java中的文档构建器列表中删除重复的xml元素

来自分类Dev

如何基于Java中的几种条件从列表中删除重复项

来自分类Dev

java中重复数字的去重

来自分类Dev

在Java中使用Lambda获取列表中的值总和

来自分类Dev

在Java中使用Lambda获取列表中的值总和

来自分类Dev

从Java中的数组中删除重复项

Related 相关文章

热门标签

归档