Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 转换树映射<;字符串,对象>;列出<;HashMap<;字符串,对象>&燃气轮机;_List_Collections_Java 8_Hashmap_Java Stream - Fatal编程技术网

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());