执行此操作的代码非常简单:
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。我在这里问,因为到目前为止我还没有在谷歌搜索中找到它,因此,添加一个带有我用过的最佳关键词的SO问题将帮助下一个遇到同样问题的人。
答案 0 :(得分:0)
这些库中只有一个功能不完美,而且它在Guava的Maps.uniqueIndex
中。您可以在Apache commons的MapUtils
中看到它。
注意这个功能
任何完成这项工作的功能都必须对这两个条件采取立场。此外,如果支持两个列表,则该函数必须对不同大小的列表采取立场,抛出异常或丢失值等。
此外还有一个问题是&#34;重复键&#34;手段。特别是如果(k,v)被插入两次就可以吞下吗?
所以任何一个函数都必须回答所有这些问题。因此,您实际上正在寻找KeyValueListsToMapFunctionBuilder.
Java中的声明性编程尚处于起步阶段。如果它是成熟的,那么确切地说是一个&#34;关键值列表来映射函数构建器&#34;会存在,如果真的成熟,它会有一个简洁的名称和界面。然而,大多数Java仍然是必不可少的,并且通过自己编写这个函数 - 就像在OP代码中一样 - 你必须在所有这些选择中做出必要的修改,就像你必须声明的那样。所以,最后