【发布时间】:2018-12-06 22:48:34
【问题描述】:
我有一个这样的 HashMap:
public final Map<String, MyClass> myMap = new HashMap<>();
现在我需要对这个 hashmap 进行排序,定义 limt 并转换为 ArrayList。我做了下面的代码:
List<MyClass> collect = myMap.values().stream().sorted((m1, m2) -> Double.compare(m2.getSomething(), m1.getSomething())).limit(amount).collect(Collectors.toList());
问题是这段代码没有性能和效率。 myMap 很大,因此代码需要花费太多时间才能完成。 知道如何处理场景吗?
欢迎任何帮助。谢谢!
【问题讨论】:
-
当我运行这段代码需要 2 小时才能完成。如果我删除排序函数,代码需要 23 秒。问题是我需要排序函数
-
amount与地图大小有什么关系?比如,它是那个大小的一半还是 10% 还是只有几件?我的观点是,如果amount较低,则不需要对地图的其余部分进行排序。
标签: java performance arraylist collections hashmap