[英]How to Map/Collect Enum.values() to HashMap<Enum,SortedMap<Date,String>>
我正在尝试使用 stream API 代替循环,并遇到以下问题。
我有一个方法,它接受一个枚举并返回一个 SortedMap。 我将每个 map 存储在一个列表中,但是我现在希望将每个 SortedMap 存储在 map 中,其中 Enum 名称是键,从listCritieraResults()
返回的 SortedMap 作为值,我如何使用流 ZDB97423CE87083A 来做到这一点?
当前工作列表方法
List<SortedMap<Date, String>> collectedMaps = Arrays.stream(Criteria.values())
.map(searcher::listCritieraResults)
.collect(Collectors.toList());
我错误地尝试使用 Collectors.toMap ..
Map<String,SortedMap<Date,String>> map = new HashMap<>();
map = Arrays.stream(Criteria.values()).collect(Collectors.toMap(c -> c.name(),c -> searcher.listCritieraResults(c)));
工作回路
Map<Critiera, SortedMap<Date, String>> map = new HashMap<>();
for ( Criteria criteria : Criteria.values()){
map.put(criteria.name(),searcher.listCritieraResults(criteria));
}
如果要将 Criteria 作为 Map 的键,请使用Map<Criteria,SortedMap<Date,String>>
并使用 Criteria 作为toMap
中的键。
Map<Criteria,SortedMap<Date,String>> map = Arrays.stream(Criteria.values()).collect(Collectors.toMap(c -> c, c -> searcher.listCritieraResults(c)));
或者,如果在toMap
中使用c.name()
,则使用字符串作为 Map 键
Map<String ,SortedMap<Date,String>> map = Arrays.stream(Criteria.values()).collect(Collectors.toMap(c -> c.name(), c -> searcher.listCritieraResults(c)));
HashMap<Criteria,SortedMap<Date,String>> map = new HashMap<>();
map = Arrays.stream(Criteria.values()).collect(Collectors.toMap(c -> c.name(),c -> searcher.listCritieraResults(c)));
在此,您正在调用 c.name() 它将返回一个字符串而不是 Enum Criteria
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.