假设我有一个品牌对象列表。 POJO 包含一个返回字符串的 getName()。我想建立一个
Map<String, Brand>
字符串是名称...但我希望 key 不区分大小写。
如何使用 Java 流来完成这项工作?尝试:
brands.stream().collect(Collectors.groupingBy(brand -> brand.getName().toLowerCase()));
不起作用,我认为这是因为我没有正确使用 groupBy。
最佳答案
Collect结果变成了case insensitive map
Map<String, Brand> map = brands
.stream()
.collect(
Collectors.toMap(
Brand::getName, // the key
Function.identity(), // the value
(first, second) -> first, // how to handle duplicates
() -> new TreeMap<String, Brand>(String.CASE_INSENSITIVE_ORDER))); // supply the map implementation
Collectors#groupBy
在这里不起作用,因为它返回 Map<KeyType, List<ValueType>>
, 但你不想要 List
作为一个值,你只需要一个 Brand
,据我了解。
关于java - groupingBy 在应该使用 String 时将键的对象作为 Map 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32891490/