2

假设我有一个 Brand 对象列表。POJO 包含一个返回字符串的 getName()。我想 Map<String, Brand> 用字符串作为名称来构建一个...但我希望密钥不区分大小写

如何使用 Java 流完成这项工作?试:

brands.stream().collect(Collectors.groupingBy(brand -> brand.getName().toLowerCase()));

不起作用,我认为这是因为我没有正确使用 groupBy 。

4

1 回答 1

9

将结果收集不区分大小写的映射中

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在这里不起作用,因为它返回 a Map<KeyType, List<ValueType>>,但您不想要 aList作为值,您只想要 a Brand,据我所知。

于 2015-10-01T15:40:22.773 回答