【发布时间】:2013-09-10 17:19:40
【问题描述】:
我有一个字符串数组:
String[] stringArray = {"x", "y", "z", "x", "x", "y", "a"};
按照每个String 的频率顺序,将其排序为较小的Collection 的最快/最有效方法是什么?
我虽然关于使用 String 作为 HashMap<String,Integer> 中的键,但这不会按频率排序
我考虑的另一种方法是使用带有该整数的字符串列表的TreeMap<Integer, String[]>,但似乎涉及很多检查..
如果可能的话,我试图避免使用多个循环,因为我的String 数组将比上面的数组大得多。谢谢!
编辑 我想要的只是能够按频率顺序输出字符串,并且最好能够将该字符串与其在数组中的频率配对,例如两个输出数组:
["x", "y", "z", "a"]
[3,2,1,1]
如果速度不是问题,这将是一个非常简单的问题,这就是为什么我在这里问伟大的思想 :)
【问题讨论】:
-
您可以使用
HashMap。将每个字符串保留为键,并在每次获得键时将1添加到值中。创建结果集合只不过是按值排序并添加键值次(如果键x具有值5,则打印x5 次)。 -
这个问题的第一个答案应该让你知道如何做到这一点:stackoverflow.com/questions/6712587/…