【发布时间】:2013-09-24 00:07:33
【问题描述】:
我被告知有一个按长度排序的单词列表,并且具有相同长度的单词按字母顺序排序。到目前为止,这就是我所拥有的方法。
public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
TreeMap<String, Integer> s = new TreeMap<String, Integer>();
ArrayList<Integer> count = new ArrayList<Integer>();
String line;
int length;
while ((line = r.readLine()) != null) {
length = line.length();
s.put(line, length);
if (!count.contains(length)){
count.add(length);
}
}
Collections.sort(count);
System.out.println(count);
}
我的想法是使用 TreeMap 来保存 String,并以单词的长度作为 key。我还有一个 ArrayList 可以跟踪所有单词的长度而没有任何重复,然后对其进行排序。
我希望以某种方式调用 TreeMap 以获取键值 5,它会列出其中包含 5 个字母的所有单词。
我想知道我是否走在正确的轨道上?我已经玩了一个多小时,似乎无法弄清楚在此之后我应该做什么。我是从正确的角度来解决这个问题的吗?
【问题讨论】:
-
只需编写一个自定义比较器来执行此操作。 docs.oracle.com/javase/7/docs/api/java/util/Comparator.html