2016-06-01 470 views
-3

我有一个List<HashMap<String,String>>,我想在java中将它转换为List<Map<String,String>>。有人可以帮助我吗? 谢谢转换List <HashMap <String,String >>到列表<map <String,String >> java

+0

嗯。在大多数情况下,这些似乎已经足够兼容。你到底需要做什么?请显示一些代码。 – Thilo

+0

是什么促使你这么想?恕我直言,几乎所有你可以用HashMap实现的,你可以使用Map来完成。 – Rockstar

+0

这是这样的。我有另一个方法返回List >。在调用后,我需要在List >的其他全局变量中进行赋值。不幸的是,我不能改变该方法的返回类型或该公共变量的类型。这就是为什么我需要这种转换。 –

回答

0

没有什么,但你必须创建一个新的地图列表。然后遍历HashMap列表,并简单地将每个对象添加到Map列表中。如下所示:

List<HashMap<String, String>> hashMapList = new LinkedList<HashMap<String, String>>(); 
HashMap<String, String> hashMap = new HashMap<String, String>(); 
hashMap.put("Ussain", "Bolt"); 
hashMapList.add(hashMap); 

List<Map<String, String>> mapList = new LinkedList<Map<String, String>>(); 
for (HashMap<String, String> map : hashMapList) { 
    mapList.add(map); 
} 

希望这能解决您的问题。

1

你觉得比较容易。通过您的原始列表

List<Map<String, String>> result = new List<>(); 

然后,就循环和每个项目添加到新的列表:

首先,创建一个List<Map<String, String>>

// This for loop basically says "for each item in yourOriginalList..." 
// if you didn't know 
for (HashMap<String, String> item : yourOriginalList) { 
    result.add(item); 
} 

“为什么我可以添加一个HashMapMap s的列表?“你可能会问。因为多态性。由于Map是一个接口,并且HashMap implements Map,无论你需要Map,只要泛型类型参数相同,就可以给它一个HashMap

+0

此外,似乎过度必须复制清单。难道它不能被施放(即使它通常不安全)? – Thilo

+0

我用Java7编译器测试了转换和复制构造函数,但都没有编译。也许它可以用Java 8编译? @Thilo – Sweeper

+0

我认为你必须使用不安全的转换('list =(List)originalList')。是的,会有关于它的警告。 – Thilo

相关问题