How do I keep the iteration order of a List when using Collections.toMap() on a stream?

前端 未结 4 2047
自闭症患者
自闭症患者 2020-11-27 15:31

I am creating a Map from a List as follows:

List strings = Arrays.asList(\"a\", \"bb\", \"ccc\");

Map

        
4条回答
  •  北海茫月
    2020-11-27 16:09

    Simple function to map array of objects by some field:

    public static  Map toLinkedHashMap(List list, Function someFunction) {
        return list.stream()
                   .collect(Collectors.toMap(
                       someFunction, 
                       myObject -> myObject, 
                       (key1, key2) -> key1, 
                       LinkedHashMap::new)
                   );
    }
    
    
    Map myObjectsByIdMap1 = toLinkedHashMap(
                    listOfMyObjects, 
                    MyObject::getSomeStringField()
    );
    
    Map myObjectsByIdMap2 = toLinkedHashMap(
                    listOfMyObjects, 
                    MyObject::getSomeIntegerField()
    );
    

提交回复
热议问题