我有一个自定义的排序地图。我想使用 map 函数转换地图中的每个值。我知道我可以使用 java 8 stream().map(function) 来实现这一点。但我想了解上面的 map(function) 是如何工作的并编写一个自定义函数。
我已经阅读了几篇文章,但我还没有找到一篇解释清除的文章。
我是怎么做的:
SortedMap<String, Integer> items = new TreeMap();//TreeMap is a custom implementation
items.put("item1", 2);
items.put("item2", 1);
SortedMap<String, Integer> transformedItems=items.entrySet().stream().collect(
Collectors.toMap(
( Map.Entry<String, Integer> entry)->entry.getKey(),//pick each key as it is
( Map.Entry<String, Integer> entry)->entry.getValue()*2, //transform the value here.
(val1, val2) -> { throw new RuntimeException("Not expecting duplicate keys"); },
()->new TreeMap<>()
我想怎么做:
SortedMap<String, Integer> items = new TreeMap();
items.put("item1", 2);
items.put("item2", 1);
SortedMap<String, Integer> transformedItems=items.customMap(value->value*2)
这里的挑战是编写 customMap(function)