java.util.Map带有entrySet()方法,该方法可以...


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


是否有单个方法调用或一系列API调用来使用Java 7 API从集合中重构出一个集合,如标记所示,我需要在此处放置什么?在以下代码示例中?

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上使用与Map类似的方法,但是我似乎找不到。

最佳答案

Apache Commons Collections提供了MapUtils.putAll可以执行您想要的操作,但是在幕后,您只需要避免for循环逻辑,因此您也可以自己进行循环...

通常,无法从Map条目中构造Set,这些条目不需要您(或您正在调用的库函数)至少迭代一次条目-可能会有特殊情况,例如如果您有一个列表,您知道该列表按键排序,那么您可以在此之上编写一个只读映射实现,该实现使用二进制搜索来查找键。

10-06 03:47