这个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()函数,但无法思考如何。
有人可以帮忙吗?
谢谢!
答案 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}