gpt4 book ai didi

Java 8 - Streams API - 在 LIST 上操作

转载 作者:行者123 更新时间:2023-12-02 08:52:09 24 4
gpt4 key购买 nike

我有一个 ArrayList,其中包含以下内容 - CHENNAI、MUMBAI、DELHI、CHENNAI、DELHI、CHENNAI。另外,假设这 3 个城市名称被定义为一个 ENUM,每个城市都有一个值。 (金奈=1、孟买=2 和德里=3)

我的 Java 8 Streams,我能够计算城市值的总和,在本例中为 1+2+3+1+3+1 = 11。

我的问题是,如果有一个附加条件,我如何计算同一个 ArrayList 的城市值的总和,

如果城市名称出现两次,则只能添加一次。即在本例中,CHENNAI 出现了 3 次。因此,在添加其值时,我们应该仅考虑 1(对于前 2 次出现)+ 1 = 2,而不是 3。类似地,DELHI 出现了 2 次。因此,德里的值应该只取一次。因此,最终结果将是 2+2+3 = 7,而不是我之前解释的 11。

请帮助如何在 Java 8 中实现这一点

最佳答案

映射到您的枚举并使用 .distinct() 在计算总和之前过滤掉重复项。

根据您如何将 enum 映射到 int,您可以尝试:

List<String> cities = ...
int sum = cities.stream()
.map(CityEnum::valueOf)
.distinct()
.mapToInt(CityEnum::ordinal)
.sum();

关于Java 8 - Streams API - 在 LIST 上操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49246277/

24 4 0