Java Map和List的转换

在Java编程中,经常需要在Map和List之间进行数据转换。Map是键值对的集合,而List是有序的集合。Map和List之间的转换可以帮助我们在不同数据结构之间进行数据操作和传递。本文将介绍Java中Map和List的转换方法,并提供相应的代码示例。

Map转List

方法一:使用Map的entrySet()方法

Map的entrySet()方法返回一个包含Map键值对的Set集合。我们可以通过遍历这个Set集合,将键值对的值添加到List中。

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

List<Integer> list = new ArrayList<>();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    list.add(entry.getValue());
}

System.out.println(list); // 输出:[1, 2, 3]

方法二:使用Map的values()方法

Map的values()方法返回一个包含Map中所有值的Collection集合。我们可以直接将这个Collection集合转换为List。

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

List<Integer> list = new ArrayList<>(map.values());

System.out.println(list); // 输出:[1, 2, 3]

List转Map

方法一:使用循环遍历List

通过循环遍历List的元素,将元素作为Map的键或值添加到Map中。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");

Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
    map.put(list.get(i), i + 1);
}

System.out.println(map); // 输出:{A=1, B=2, C=3}

方法二:使用Java 8的流操作

利用Java 8的流操作可以更简洁地将List转换为Map。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");

Map<String, Integer> map = IntStream.range(0, list.size())
        .boxed()
        .collect(Collectors.toMap(list::get, i -> i + 1));

System.out.println(map); // 输出:{A=1, B=2, C=3}

总结

本文介绍了Java中Map和List之间的转换方法。对于Map转List,我们可以使用Map的entrySet()方法或values()方法;对于List转Map,我们可以通过循环遍历List或利用Java 8的流操作。根据实际需求,选择合适的方法可以更高效地进行数据转换和操作。

参考文献

  • [Oracle Documentation: Map (Java Platform SE 11)](
  • [Oracle Documentation: List (Java Platform SE 11)](