【发布时间】:2014-03-19 22:16:30
【问题描述】:
我有一串单词,我想根据它们的长度排序返回。有些单词重复了不止一次,所以我使用 HashMap 来返回单词及其计数:
Map<String, Integer> map = new HashMap<String, Integer>();
for (String s : fragments) {
if (map.containsKey(s)) {
map.put(s, map.get(s) + 1);
} else {
map.put(s, 1);
}
}
我如何使用它来返回每个单词的长度并将它们从最长到最短排序?
编辑: 例如,如果输入是一个字符串
"From the torrent, or the fountain,From the red cliff of the mountain"
我做了一个简单的循环:
for (int i = 0; i < fragments.length; i++) {
System.out.println(fragments[i]+" " +fragments[i].length());
}
输出为:(完整输出 re:@Pshemo)
from 4
the 3
or 2
the 3
the 3
red 3
cliff 5
of 2
the 3
mountain 8
等等。它是未排序的,每次看到这个词时,像“the”这样的词都会重复。我不想重复重复并将单词从最长到最短排序。
我想要的输出应该是:
mountain 8
cliff 5
from 4
the 3
red 3
of 2
or 2
【问题讨论】:
-
你告诉我们
some words are repeated more than once,但你没有告诉我们这个事实的后果。是否允许重复值? -
@Pshemo 我正在实施 HashMap,这样我们就不会看到多次打印出同一个单词 - 我们知道它多次出现的唯一方法是查看单词的计数。长度相同,我不想输出相同的单词两次。
-
据我所知,您甚至不需要这样的单词图和它们的出现次数来解决您的问题。也许发布带有输入和预期输出的示例以提供更好的帮助。
-
@Pshemo 我编辑了我的问题,现在它有示例。我也不确定我是否需要 HashMap。我对 Java 很陌生,所以在这里我几乎不知所措。