gpt4 book ai didi

java - 计算 ArrayList 中项目的出现次数并列出前 N 个项目

转载 作者:行者123 更新时间:2023-12-02 04:26:34 24 4
gpt4 key购买 nike

场景:

作为此 question 的后续行动,我有一个java.util.ArrayList<Parcel>和一个 Parcel对象。

public class Parcel {
/** The name. */
private String name;

/** The address. */
private String address;

/** The contact no. */
private String contactNo;

/** The postal code. */
private String postalCode;

// Accessors and mutators
}

我有一个方法可以从InputStream返回包裹列表。 .

List<Parcel> parcels = parcelManager.getParcelList(inputStream);


@Test
public void testParcelBeanReturnCount() {
Assert.assertEquals(13, tester.getParcelList(inputStream)); // works fine.
}

现在,如何列出前 N 个邮政编码以及交付的包裹数量(发送至特定邮政编码)?我尝试过 Multiset来自 Guava 的 API。

Multiset<Parcel> postalCodeCount = HashMultiset.create(parcels);

System.out.println(postalCodeCount.size()); // 13.

最佳答案

Parcel需要明确定义的hashCode()equals()

参见HashCode and Equals method in Java object

或者,您可以使用 Java8:

List l = parcels.stream()
.collect(Collectors.groupingBy(p -> p.getPostalCode()))
.entrySet()
.stream()
.sorted((e1, e2) -> Integer.compare(e2.getValue().size(), e1.getValue().size()))
.limit(N) //Top N
.collect(Collectors.toList());

关于java - 计算 ArrayList 中项目的出现次数并列出前 N 个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32066962/

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