繁体   English   中英

如何将 Enum.values() 映射/收集到 HashMap <enum,sortedmap<date,string> &gt; </enum,sortedmap<date,string>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM