期待される出力の形状が明確ではありません。
次のような 3 つのリスト:
[7]
[13]
[30]
または、次のようなキーから 3 つのリストへのマッピング:
{ "SKI" -> [7] }
{ "COR" -> [13] }
{ "IN" -> [7] }
?
それにもかかわらず、ここにいくつかのオプションがあります:
オプション1
// HashMap does not preserve order of entries
HashMap<String, Integer> map = new HashMap<>();
map.put("SKI", 7);
map.put("COR", 13);
map.put("IN", 30);
List<List<Integer>> listOfLists = map.values()
.stream()
.map(Collections::singletonList)
.collect(Collectors.toList());
listOfLists.forEach(System.out::println);
Output:
[7]
[30]
[13]
オプション 2
// LinkedHashMap preserves order of entries
LinkedHashMap<String, Integer> map2 = new LinkedHashMap<>();
map2.put("SKI", 7);
map2.put("COR", 13);
map2.put("IN", 30);
List<List<Integer>> listOfLists2 = map2.values()
.stream()
.map(Collections::singletonList)
.collect(Collectors.toList());
listOfLists2.forEach(System.out::println);
Output:
[7]
[13]
[30]
オプション 3
HashMap<String, Integer> map3 = new HashMap<>();
map3.put("SKI", 7);
map3.put("COR", 13);
map3.put("IN", 30);
HashMap<String, List<Integer>> result = new HashMap<>();
map3.forEach((key, value) -> result.put(key, Collections.singletonList(value)));
result.entrySet().forEach(System.out::println);
Output:
SKI=[7]
IN=[30]
COR=[13]
オプション 4
Map<String, List<Integer>> result =
map4.entrySet()
.stream()
.collect(Collectors.toMap(
// key mapping
entry -> entry.getKey(),
// value mapping
entry -> Collections.singletonList(entry.getValue())
)
);
result.forEach((key, val) -> System.out.println(key + " " + val));
Output:
SKI [7]
IN [30]
COR [13]