List 转换树映射<;字符串,对象>;列出<;HashMap<;字符串,对象>&燃气轮机;
我有一个List 转换树映射<;字符串,对象>;列出<;HashMap<;字符串,对象>&燃气轮机;,list,collections,java-8,hashmap,java-stream,List,Collections,Java 8,Hashmap,Java Stream,我有一个TreeMap,其中包含实际上是HashMap的对象。我想将其转换为列表。我试图使用Java8转换它,并编写了以下代码,由于从List转换到List而导致编译错误 publicstaticvoidmain(字符串[]args){ TreeMap TreeMap=新的TreeMap(); HashMap map1=新的HashMap(); map1.put(“a”,1); map1.put(“b”、“2”); map1.put(“c”,5); 树映射放置(“01”,映射1); HashMa
TreeMap
,其中包含实际上是HashMap
的对象。我想将其转换为列表
。我试图使用Java8转换它,并编写了以下代码,由于从List
转换到List
而导致编译错误
publicstaticvoidmain(字符串[]args){
TreeMap TreeMap=新的TreeMap();
HashMap map1=新的HashMap();
map1.put(“a”,1);
map1.put(“b”、“2”);
map1.put(“c”,5);
树映射放置(“01”,映射1);
HashMap map2=新的HashMap();
map2.put(“a”,5);
map2.put(“b”、“7”);
map2.put(“c”,6);
树映射放置(“02”,映射2);
//此转换不起作用,因为Java不允许从一个列表转换到另一个列表
List List=treeMap.values().stream()
.collect(Collectors.toList());
}
将TreeMap更改为TreeMap
是可行的,但我不想做此更改,因为我正在将其传递给一个单独的方法,该方法需要TreeMap
请建议。好吧,您将
树映射
定义为具有对象
值,这就是值().stream()
返回流的原因。要么更改合同,要么需要在流中强制转换元素:
List<HashMap<String,Object>> list= treeMap.values().stream()
.map(element -> (HashMap<String,Object>)element)
.collect(Collectors.toList());
List List=treeMap.values().stream()
.map(元素->(HashMap)元素)
.collect(Collectors.toList());
我首先给出treeMap
正确的类型:treeMap
然后,您可以包装映射并将newtreemap(TreeMap)
传递给另一个方法
更好的是,因为它不需要一个新的映射,如果允许的话,可以跟随Sean的评论并将该方法的参数从TreeMap
更改为TreeMap
。您可以将另一个方法参数从TreeMap
更改为TreeMap
(相当于?扩展对象
)?这将允许您传入一个树映射
。为什么不首先将定义更改为正确的呢。这个对象
只会导致越来越深的问题……谢谢,我想避免这种做法,因为我不想对现有代码进行任何修改。无论如何,你接受了你的建议,现在就改变了它。因为这仍然是一个未经检查的操作,所以你可以将整个过程简化为@SuppressWarnings(“unchecked”)List=newArrayList(treeMap.values())代码>…
List<HashMap<String,Object>> list= treeMap.values().stream()
.map(element -> (HashMap<String,Object>)element)
.collect(Collectors.toList());