Java 8 Stream - 为地图找到最大数量<String, List<Object>>
Java 8 Stream - Find greatest amount for Map<String, List<Object>>
如何在 Map<String,List<Account>>
中找到 max sold
class Account {
String hashId;
String address;
BigDecimal sold;
}
我看到了这个讨论,但我不能根据我的情况修改它,我必须搜索所有列表以获得最大的销售价值。
你可以这样做。这假定您有 getter。它 return 是包含最高销量的帐户。
给出
Map<String, List<Account>> accounts = null;
所有值中最好的
- 平面化值
- 比较售价
- return 与 get
Account best =
accounts.values().stream().flatMap(Collection::stream)
.max(Comparator.comparing(Account::getSold))
.get();
每个键的最佳
- 流式传输 entrySet
- 将其映射到现有密钥
- 然后流式传输每个列表并比较值,得到最大值
Map<String, Account> bestOfEach = accounts.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey,
e -> e.getValue().stream()
.max(Comparator
.comparing(Account::getSold))
.get()));
如果您只想要最大值 sold
而没有别的,您可以执行以下操作:
我假设您的 Map
名为“地图”,并且 sold
有一个名为 getSold
的 getter。
这将 return 一个具有最大值的 Optional。
map.values()
.stream()
.flatMap(listOfAccounts -> listOfAccounts.stream().map(Account::getSold))
.max(BigDecimal::compareTo);
如何在 Map<String,List<Account>>
class Account {
String hashId;
String address;
BigDecimal sold;
}
我看到了这个讨论,但我不能根据我的情况修改它,我必须搜索所有列表以获得最大的销售价值。
你可以这样做。这假定您有 getter。它 return 是包含最高销量的帐户。
给出
Map<String, List<Account>> accounts = null;
所有值中最好的
- 平面化值
- 比较售价
- return 与 get
Account best =
accounts.values().stream().flatMap(Collection::stream)
.max(Comparator.comparing(Account::getSold))
.get();
每个键的最佳
- 流式传输 entrySet
- 将其映射到现有密钥
- 然后流式传输每个列表并比较值,得到最大值
Map<String, Account> bestOfEach = accounts.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey,
e -> e.getValue().stream()
.max(Comparator
.comparing(Account::getSold))
.get()));
如果您只想要最大值 sold
而没有别的,您可以执行以下操作:
我假设您的 Map
名为“地图”,并且 sold
有一个名为 getSold
的 getter。
这将 return 一个具有最大值的 Optional。
map.values()
.stream()
.flatMap(listOfAccounts -> listOfAccounts.stream().map(Account::getSold))
.max(BigDecimal::compareTo);