将存储String []的HashMap转换为仅使用String [0]的新HashMap

时间:2014-01-10 10:34:42

标签: java hashmap

这个HashMap存储了一些String数组:

HashMap<String, String[]> loaded_data = new HashMap();

我需要将它转换为一个新的HashMap,它具有与String [0]相同的键和值

HashMap<String, String> trimmed_data = HashMap<String, String[0]> loaded_data;

在这里引用JavaDocs:http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html我已经确定了可能对此有帮助的clone()和putAll()函数,但无法思考如何。

有人可以帮忙吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

我将使用entrySet获取所有映射,并循环遍历它们以获取数组的第一个元素。

HashMap<String, String> trimmed_data = new HashMap<>();

for(Map.Entry<String, String[]> entry : loaded_data.entrySet()){
   trimmed_data.put(entry.getKey(), entry.getValue()[0]);
}

答案 1 :(得分:2)

你可以试试这个。

    HashMap<String, String[]> loaded_data = new HashMap();
    HashMap<String, String> trimmed_data =new HashMap<>();
    for(Map.Entry<String,String[]> entry:loaded_data.entrySet()){
        trimmed_data.put(entry.getKey(),entry.getValue()[0]);
    }

您必须遍历loaded_data地图并从中获取oth索引元素。

答案 2 :(得分:1)

使用getKeys()获取所有密钥。对键的迭代得到值split()该值获取从split()函数返回的第0个数组索引,并将其存储在新的HashMap中。

答案 3 :(得分:0)

public static void main(String[] args) {

        Map<String, String[]> hm = new HashMap<String, String[]>();
        hm.put("one", new String[] { "1", "2", "3" });
        hm.put("two", new String[] { "2", "3", "4" });
        hm.put("three", new String[] { "3", "4", "5" });

        Map<String, String> newHm = new HashMap<String, String>();

        Iterator it = hm.keySet().iterator(); // get iterator for keyset
        while (it.hasNext()) {
            String str = (String) it.next();  
            newHm.put(str, hm.get(str)[0]);  // for each key , get value of [0]
        }

        System.out.println(newHm);
    }

O/P : {two=2, one=1, three=3}