我有一个包含单词及其定义的树状图。我正在编写一个方法,它将返回所有单词及其定义的范围;它包含两个参数: string begin
以及 string end
. 到目前为止,我在函数外部初始化了一个树Map:
Map<String, List<String>> wordDictionary = new TreeMap<String, List<String>>();
Set<String> wordSet = wordDictionary.keySet();
Iterator<String> iterator = wordSet.iterator();
while (iterator.hasNext()) {
String current = iterator.next();
if (
(current.compareToIgnoreCase(begin) >= 0) &&
(current.compareToIgnoreCase(end) <= 0)
) {
List<String> defList = wordDictionary.get(current);
System.out.println(current);
Iterator<String> itr2 = defList.iterator();
while (itr2.hasNext()) {
System.out.println(" " + itr2.next());
}
}
}
示例用法:“list a b”方法应返回 a
至 b
但是,我的方法返回 a
以及 b
; 它不包括以 a
以及 b
.
我试着把这个案子改成
if (
(current.compareToIgnoreCase(begin) > 0) &&
(current.compareToIgnoreCase(end) < 0)
)
但这也不管用。它显示以开头的单词 begin
但不是 end
. 希望这有道理。
3条答案
按热度按时间bogh5gae1#
获取所有以。
'b'
,使用subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
:输出
kkih6yb82#
通过执行以下操作,可以使treemap的子Map两端都包含在内:
印刷品
它增加结束字符串的最后一个字符,以便包含任何小于该字符的内容。
sdnqo3pr3#
如果你有树状图,用它的
subMap()
方法!在整个Map上迭代。
第2个和第4个参数控制范围结束是否包含-似乎您希望两端都包含,但如果不包含,请将第4个参数更改为
false
.——
顺便说一下,由于您不打印单词,只打印定义,因此您的代码可以简化为:
如果您还想在缩进定义之前打印单词: