首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java 7从Set<Map.Entry>构建地图?

用Java 7从Set<Map.Entry>构建地图?
EN

Stack Overflow用户
提问于 2014-02-11 15:41:32
回答 4查看 196关注 0票数 0

java.util.Map附带了entrySet()方法.

返回此映射中包含的映射的集合视图。

是否有一个方法调用或一系列API调用来使用Java7API重新构造集合中的集合,作为标记,我需要在这里放置什么?在下面的代码示例中?

代码语言:javascript
复制
package so;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class SetMapExample {
    public static void main(String[] args) {
        Map<String, String> m = new HashMap<String, String>();
        m.put("k1", "v1");
        m.put("k2", "v2");
        Set<Map.Entry<String, String>> s = m.entrySet();
        Map<String, String> ms = s...   // what do I need to put here?
    }
}

如果可能的话,我不想使用for循环,也不希望使用类似于entrySet on Map的方法,但我似乎找不到。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-11 15:53:57

提供了MapUtils.putAll,它可以做您想做的任何事情,但是在封面下面只需要执行您想要避免的for循环逻辑,所以您最好自己做循环。

通常,不需要您(或您正在调用的库函数)对条目进行至少一次迭代的条目的Map是无法构造的--可能有一些特殊情况,例如,如果您有一个按键排序的条目列表,那么您可以在上面编写一个只读地图实现,在上面使用二进制搜索查找键。

票数 2
EN

Stack Overflow用户

发布于 2014-02-11 15:49:07

Set在幕后使用Map,而Set中的值实际上是Map中的键。因此,如果没有for循环,就不可能完成所需的任务。使用普通Java (没有其他花哨的框架),您只能这样做:

代码语言:javascript
复制
for(Map.Entry<String,String> entry : s) {
    ms.put(entry.getKey(), entry.getValue());
}
票数 1
EN

Stack Overflow用户

发布于 2014-02-11 15:46:54

JDK没有提供这样的方法,但是如果需要,可以使用Guava。提示:使用TransofrmersMaps。您必须编写自己的“转换器”--番石榴的Function的单行实现。如果将其实现为泛型顶级类,则可以在以后重用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21706320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档