【发布时间】:2016-02-23 22:09:15
【问题描述】:
我目前在尝试对Map<String, IncreaseDetails> 进行排序时遇到一些问题,其中IncreaseDetails 只是一个包含几个字段的自定义数据结构。
到目前为止,我已经相当清楚地理解,强烈建议不要使用 TreeMap,因为 TreeMap 应该按 KeySet 而不是实际值排序。
因此,我尝试同时切换到 HashMap 和 LinkedHashMap,但只是调用
Collections.sort(map,comparator) 似乎无法解决问题。从 Java 8 开始,我就打算尝试使用 Stream API,但我不太了解它。
到目前为止,我的比较器如下所示:
import java.util.Comparator;
import java.util.Map;
public class CompTool implements Comparator<Float> {
Map<String, IncreaseDetails> unsortedMap;
public CompTool(Map<String, IncreaseDetails> unsortedMap)
{
this.unsortedMap = unsortedMap;
}
public int compare(Float countryOne, Float countryTwo)
{
Float countryOneValue = unsortedMap.get(countryOne).getRealIncrease();
Float countryTwoValue = unsortedMap.get(countryTwo).getRealIncrease();
return countryTwoValue.compareTo(countryOneValue);
}
}
非常欢迎任何建议,因为我发现了很多类似的问题或视频,但对我目前的情况没有太大帮助。
【问题讨论】:
标签: sorting collections java-8 java-stream