如何在 Java 中将列表转换为映射:最佳方法
在 Java 中将列表转换为映射是一项常见任务,可以通过多种方式实现。一种方法是迭代列表并手动填充映射。但是,有更有效的方法可以使用内置 Java 功能来执行此转换。
基于流的方法(Java 8 或更高版本)
使用 Java 8, Stream API 提供了一种将 List 转换为 Map 的简洁且高性能的方法。此方法利用 Collectors.toMap() 方法:
Map<Integer, String> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));
这里,Item::getKey lambda 函数检索列表中每个元素的键,而 item -> 则检索列表中每个元素的键。 item lambda 检索值。
使用循环的手动方法
对于 Java 8 之前的版本或如果流不适合,可以使用手动方法:
List<Object[]> results; Map<Integer, String> resultsMap = new HashMap<>(); for (Object[] o : results) { resultsMap.put((Integer) o[0], (String) o[1]); }
这种方法涉及迭代列表并手动提取键和值对,这可能比基于流的方法。
对非双射函数使用二元运算符
如果映射函数不是双射的(即多个值可以映射到同一个键) ),二元运算符可用于合并重复的键值。例如,如果我们要查找每个唯一键的值的总和:
Map<String, Integer> map = intList.stream().collect(toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));
这里,二元运算符 Integer::sum 提供了合并重复键值的逻辑。
结论
虽然将 List 转换为 Map 的最佳方法取决于具体要求,但使用 Stream推荐使用 Collectors.toMap() 的 API,因为它的效率和简洁性。手动方法可以在旧版本的 Java 中或当流不适用时使用。
以上是如何高效地将Java列表转换为Map?的详细内容。更多信息请关注PHP中文网其他相关文章!