我想将Map<Integer, String>
转换为List<String>
每个地图条目-列表中的1个条目作为“键-值”
我搜索了,只发现只将值映射到List。
Map<Integer, String> map = new HashMap<>();
map.put(10, "apple");
map.put(20, "orange");
map.put(30, "banana");
map.put(40, "watermelon");
map.put(50, "dragonfruit");
我希望将其映射为列表
"10-apple"
"20-orange"
以此类推。
如果我使用foreach ..可以很容易地做到这一点,但是我想知道通过流获取它是否可行
答案 0 :(得分:2)
List<String> list = map.entrySet()
.stream()
.map(entry -> entry.getKey() + "-" + entry.getValue())
.sorted()
.collect(Collectors.toList());
答案 1 :(得分:1)
这是使用.map从列表移动到地图的一种变体
List<String> list = map.entrySet()
.stream()
.map(x -> String.format("%d-%s", x.getKey().intValue(), x.getValue()))
.sorted().collect(Collectors.toList());
答案 2 :(得分:1)
与其他答案稍有不同。如果插入/迭代顺序很重要,那么我宁愿首先使用LinkedHashMap
而不是使用HashMap
然后对它进行排序,但这实际上并不总是可以保证。
示例:
Map<Integer, String> map = new LinkedHashMap<>();
...
...
...
然后在entrySet上流式传输并收集到列表实现:
List<String> list = map.entrySet()
.stream()
.map(e -> e.getKey() + "-" + e.getValue())
.collect(Collectors.toList());
答案 3 :(得分:-2)
如果你只想要 Map 的值,试试这个
List<String> list = new ArrayList<>(map.values())
{"苹果", "橙色"}