通过使用java 8流对集合进行排序,将集合转换为Map

我有一个列表,我需要先自定义它,然后将其转换为一个地图与它的Id vs name map。 这是代码,但是—

Map map = new LinkedHashMap(); list.stream().sorted(Comparator.comparing(Building::getName)).forEach(b-> map.put(b.getId(), b.getName())); 

我认为这将完成这项工作,但我想知道我是否可以避免在这里创建链接哈希映射,就像花哨的函数编程在一行中完成工作一样?

你有这个目的的Collectors.toMap

 Map map = list.stream() .sorted(Comparator.comparing(Building::getName)) .collect(Collectors.toMap(Building::getId,Building::getName)); 

如果要强制实例化将要实例化的Map实现,请使用以下命令:

 Map map = list.stream() .sorted(Comparator.comparing(Building::getName)) .collect(Collectors.toMap(Building::getId, Building::getName, (v1,v2)->v1, LinkedHashMap::new)); 

使用java.util.stream.Collectors toMap()