【发布时间】:2015-07-02 20:33:28
【问题描述】:
我有一个ConcurrentMap<String, Integer>,我想从它那里得到一个List<String>,它的字符串映射到第一大整数,第二大整数,等等。
现在我有一些类似的东西:
循环遍历地图的keySet
在该循环中,循环通过“排序”List<String>
继续循环,直到键字符串的相应值小于“已排序”List 的元素i,然后将其插入。
现在这将起作用,但我怀疑它是否非常有效。 Java 8 是否有任何内置的排序算法可以帮助我?
【问题讨论】:
-
如果你展示你的代码而不是描述它,你会更容易理解你在做什么。
-
抱歉,我没有测试我的代码,也不想用可能不正确的代码混淆人们
-
这也是数据结构中的一个问题。我会创建一个逆映射 - 即从 Integer 到 List
的映射。我将使用 TreeMap,而不是使用HashMap,其中键顺序基于散列函数,因此键在插入地图时实际上是排序的。然后,我可以遍历已经按其值排序的键,我可以获得与该整数键匹配的字符串列表,我可以将它连接到一个主字符串列表,这是您需要的最终列表 -
尽管您可能最好使用内置的方式来做到这一点,就像他们在答案中描述的那样。我的算法正在重新发明轮子