Java HashMap
をTreeMap
のインスタンスに変換する必要があります(マップコンテンツを含む)
HashMap<String, Object> src = ...;
TreeMap<String, Object> dest = src.entrySet().stream()
.filter( ... )
.collect(Collectors.toMap( ???, ???, ???, TreeMap::new));
このコードをコンパイル可能にするために、???
の代わりに何を置くべきですか?
から Collectors.toMap(...)javadoc :
* @param keyMapper a mapping function to produce keys
* @param valueMapper a mapping function to produce values
* @param mergeFunction a merge function, used to resolve collisions between
* values associated with the same key, as supplied
* to {@link Map#merge(Object, Object, BiFunction)}
* @param mapSupplier a function which returns a new, empty {@code Map} into
* which the results will be inserted
例えば:
HashMap<String, Object> src = ...;
TreeMap<String, Object> dest = src.entrySet().stream()
.filter( ... )
.collect(Collectors.toMap(Map.Entry::getKey , Map.Entry::getValue, (a,b) -> a, TreeMap::new));
マップをストリームに変換するもう1つの方法:
Stream.of(t)の使用
HashMap<String, Object> src = ...;
TreeMap<String, Object> dest = Stream.of(src)
.filter( ... )
.collect(Collectors.toMap(Map.Entry::getKey , Map.Entry::getValue, (a,b) -> a, TreeMap::new));