Use*_*er3 6 java android list treemap
我有一个TreeMap,它有一个字符串键,值部分是一个具有至少四个值的List.
Map<String,List<String>> mMap = new TreeMap<String,List<String>>();
Run Code Online (Sandbox Code Playgroud)
我正在使用树形图,以便我的键被排序.但是在排序之后我想将这个TreeMap映射到listview.我想将Map转换为列表,然后为listview构建一个Adapter.但是当我这样做时,我无法转换它
ArrayList<String> trendyList = new ArrayList<String>(mMap);
Run Code Online (Sandbox Code Playgroud)
它说: The constructor ArrayList<String>(Map<String,List<String>>) is undefined
有没有其他方法可以做到这一点?
Tim*_*m B 15
假设您需要一个字符串列表列表:
List<List<String>> trendyList = new ArrayList<>(mMap.values());
Run Code Online (Sandbox Code Playgroud)
如果要合并列表,那么它会变得有点复杂,您需要自己运行这些值并进行合并.
要合并列表:
List<String> trendyList = new ArrayList<>();
for (List<String> s: mMap.values()) {
trendyList.addAll(s);
}
Run Code Online (Sandbox Code Playgroud)
要将列表与键合并:
List<String> trendyList = new ArrayList<>();
for (Entry<String, List<String>> e: mMap.entrySet()) {
trendyList.add(e.getKey());
trendyList.addAll(e.getValue());
}
Run Code Online (Sandbox Code Playgroud)
在Java 8中,您可以获得执行此操作的新工具.
要合并列表:
// Flat map replaces one item in the stream with multiple items
List<String> trendyList = mMap.values().stream().flatMap(List::stream).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
要将列表与键合并:
List<String> trendyList = mMap.entrySet().stream().flatMap(e->Stream.concat(Stream.of(e.getKey()), e.getValue().stream()).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)