gpt4 book ai didi

java - 将两个列表分别转换为新映射的键和值

转载 作者:太空宇宙 更新时间:2023-11-04 14:08:57 25 4
gpt4 key购买 nike

执行此操作的代码非常简单:

Map<K, V> listsToMap(List<K> keys, List<V> values) {
// check preconditions - sizes
Map<K, V> map = new HashMap<>();
for ( int i = 0; i < keys.size(); i++) {
map.put(keys.get(i), values.get(i));
}
}

我的问题是:这是否存在于最常见的 Java 库之一中?这将是标准库,包括 Java 7 或 Java 8、Apache Commons 或 Guava。我在这里问是因为到目前为止我还没有在 Google 搜索中找到它,因此,使用我使用过的最佳关键字添加一个 SO 问题将帮助下一个遇到同样问题的人。

最佳答案

这些库中只有一个函数无法正常工作,它位于 Guava 的 Maps.uniqueIndex 中。 。你会期望它在MapUtils中在 Apache 公共(public)资源中。

注意这个函数

  • 实际上并不支持两个列表,因此不必担心不同的长度列表
  • 如果尝试重复的键,则会引发异常

任何执行这项工作的函数都必须对这两个条件采取立场。此外,如果支持两个列表,则该函数必须对不同大小的列表采取立场,要么抛出异常,要么丢失值等。

此外,还有“重复 key ”含义的问题。特别是如果 (k,v) 插入两次可以吞咽吗?

因此任何一个函数都必须回答所有这些问题。因此,您实际上正在寻找 KeyValueListsToMapFunctionBuilder。

Java 中的声明式编程还处于起步阶段。如果它成熟,那么就会存在“映射函数构建器的键值列表”,如果它真的成熟,它就会有一个简洁的名称和界面。然而,大多数 Java 仍然是命令式的,并且通过自己编写此函数(如在 OP 的代码中一样),您可以命令式地做出所有这些选择,大约需要声明式的行数。所以,总结一下

  • 有一个不错的函数可以在最佳情况下工作,并决定如何处理错误的输入
  • 任何更通用的东西都会有复杂的配置
  • “声明式”Java 生态系统还不是很成熟,因此您必须自己强制执行复杂的配置,即只需编写该死的代码即可。

关于java - 将两个列表分别转换为新映射的键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28565909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com