Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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
树映射到ArrayList Java_Java_Android_List_Treemap - Fatal编程技术网

树映射到ArrayList Java

树映射到ArrayList Java,java,android,list,treemap,Java,Android,List,Treemap,我有一个树映射,它有一个字符串键,值部分是一个至少有四个值的列表 Map<String,List<String>> mMap = new TreeMap<String,List<String>>(); Map mMap=newtreemap(); 我正在使用树映射,以便对我的键进行排序。但是在排序之后,我想将这个树状图映射到一个listview。我想将映射转换为列表,然后为listview构建一个适配器。然而,当我转换时,我无法转换它 Arr

我有一个树映射,它有一个字符串键,值部分是一个至少有四个值的列表

Map<String,List<String>> mMap = new TreeMap<String,List<String>>(); 
Map mMap=newtreemap();
我正在使用树映射,以便对我的键进行排序。但是在排序之后,我想将这个树状图映射到一个listview。我想将映射转换为列表,然后为listview构建一个适配器。然而,当我转换时,我无法转换它

ArrayList<String> trendyList = new ArrayList<String>(mMap);  
ArrayList trendyList=新的ArrayList(mMap);
它说:
构造函数ArrayList(Map)未定义


我还有别的办法吗

假设您需要字符串列表:

List<List<String>> trendyList = new ArrayList<>(mMap.values()); 
List-trendyList=new-ArrayList(mMap.values());
如果您想要合并列表,那么它会变得有点复杂,您需要自己运行这些值并进行合并

要合并列表,请执行以下操作:

List<String> trendyList = new ArrayList<>(); 
for (List<String> s: mMap.values()) {
   trendyList.addAll(s);
}
// Flat map replaces one item in the stream with multiple items
List<String> trendyList = mMap.values().stream().flatMap(List::stream).collect(Collectors.toList())
List trendyList=new ArrayList();
对于(列表s:mMap.values()){
trendyList.addAll(s);
}
要将列表与键合并,请执行以下操作:

List<String> trendyList = new ArrayList<>(); 
for (Entry<String, List<String>> e: mMap.entrySet()) {
   trendyList.add(e.getKey());
   trendyList.addAll(e.getValue());
}
List<String> trendyList = mMap.entrySet().stream().flatMap(e->Stream.concat(Stream.of(e.getKey()), e.getValue().stream()).collect(Collectors.toList());
List trendyList=new ArrayList();
对于(条目e:mMap.entrySet()){
add(e.getKey());
addAll(e.getValue());
}
在Java 8中,您可以使用新的工具来执行此操作。

要合并列表,请执行以下操作:

List<String> trendyList = new ArrayList<>(); 
for (List<String> s: mMap.values()) {
   trendyList.addAll(s);
}
// Flat map replaces one item in the stream with multiple items
List<String> trendyList = mMap.values().stream().flatMap(List::stream).collect(Collectors.toList())
//平面映射将流中的一个项目替换为多个项目
List trendyList=mMap.values().stream().flatMap(List::stream).collect(Collectors.toList())
要将列表与键合并,请执行以下操作:

List<String> trendyList = new ArrayList<>(); 
for (Entry<String, List<String>> e: mMap.entrySet()) {
   trendyList.add(e.getKey());
   trendyList.addAll(e.getValue());
}
List<String> trendyList = mMap.entrySet().stream().flatMap(e->Stream.concat(Stream.of(e.getKey()), e.getValue().stream()).collect(Collectors.toList());
List trendyList=mMap.entrySet().stream().flatMap(e->stream.concat(stream.of(e.getKey()),e.getValue().stream()).collect(Collectors.toList());

映射可以看作是键值对的集合,列表只是值的集合。您必须选择现在是否需要键,然后使用
keySet()
或者如果需要值而不是使用
值()
wich返回一个
列表的集合

trendyList
应该包含键或值?我的错!它只能包含键或值。但是我很傻,我忘记了这个事实。Lorem ipsum dolor sit amet!这个问题是android特有的吗?