gpt4 book ai didi

java - 使用基于字段的流计算 Java 8 中的重复项

转载 作者:行者123 更新时间:2023-12-01 16:42:59 25 4
gpt4 key购买 nike

我正在尝试计算 Item 对象列表中有多少项是重复的。如果项目具有相同的 id,则它们是重复的。

例如

[5, 5, 2, 4, 2]

id 5 和 2 都出现多次,所以答案是 2。

<小时/>
public class Item {

int id;

public Item(int id) {
this.id = id;
}

public int getId() {
return id;
}
}
<小时/>
public class DuplicateItems {

public static int count(List<Item> items) {
int count = 0;
if (items.size() == 0) {
return 0;
}

items.sort(Comparator.comparingInt(Item::getId));
Map<Object, Long> resultMap = new HashMap<>();
items.forEach(e -> resultMap.put(e, resultMap.getOrDefault(e, 0L) + 1L));
System.out.println(resultMap.size());
return count;
}

private static List<Items> convertToList(int[] values) {
List<Item> items = new ArrayList<>();
for (int num : values) {
items.add(new Item(num));
}
return items;
}

public static void main(String[] args) {
int[] itemsArray = {5, 5, 2, 4, 2};
List<Item> items = convertToList(itemsArray);
int duplicateCount = count(items);
System.out.println("Duplicate Count: " + duplicateCount);
}
}
<小时/>

当我运行该程序时,它会显示以下内容:

重复计数:5

为什么该值不是 2?

最佳答案

这会将它们根据频率放入 map 中,然后计算大于 1 的值的数量。

       long dups = list2.stream()
.collect(Collectors.groupingBy(Item::getId, Collectors.counting()))
.values().stream().filter(i-> i > 1).count();

System.out.println(dups);

关于java - 使用基于字段的流计算 Java 8 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59670887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com