Java8: convert one card to another using stream

I need to convert Java HashMap to TreeMap instance (including map contents)

 HashMap<String, Object> src = ...; TreeMap<String, Object> dest = src.entrySet().stream() .filter( ... ) .collect(Collectors.toMap( ???, ???, ???, TreeMap::new)); 

What should I put in place of ??? to make this code compile?

+17
java lambda java-8 java-stream
Sep 07 '14 at 16:49
source share
1 answer

From 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 

For example:

 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)); 
+36
Sep 07 '14 at 16:59
source share



All Articles