TreeMap,如何获取密钥以获取其信息
问题描述:
我想知道,如何获取TreeMap中的密钥,以获取该密钥的信息?例如,我宣布一个TreeMap这样的:TreeMap,如何获取密钥以获取其信息
TreeMap miniDictionary = new TreeMap<DictionaryTerm,Integer>(new TermComparator());
DictionaryTerm只是一个简单的类,它只有两个变量,“字符串术语”和“INT号”。
TermComparator是一类比较两个键:
class TermComparator implements Comparator<DictionaryTerm> {
@Override
public int compare(DictionaryTerm e1, DictionaryTerm e2) {
return e1.getTerm().compareTo(e2.getTerm());
}
}
假设映像树早已像这样的条目:( “齐柏林飞船”,55) - > 25 其中( LedZeppelin,55)是关键和价值。
现在让我们说我有这个变量:
DictionaryTerm aTerm = new DictionaryTerm("LedZeppelin",100);
我怎样才能找到树形图“aTerm”,并获得关键它来阅读它的信息?考虑到我创建的TermComparator,按字符串术语进行比较。
非常感谢。
答
我想你有兴趣从TreeMap
得到相当于aTerm
的密钥,因为获得该值很容易(miniDictionary.get(aTerm)
)。
要获得密钥,您可以使用floorKey()
。此方法返回“的最大键小于或等于给定键,返回null如果没有这样的关键”,所以你必须检查null和平等第一:
TermComparator termComparator = new TermComparator();
TreeMap<DictionaryTerm, Integer> miniDictionary = new TreeMap<>(termComparator);
miniDictionary.put(new DictionaryTerm("LedZeppelin", 55), 25);
DictionaryTerm aTerm = new DictionaryTerm("LedZeppelin",100);
DictionaryTerm floorKey = miniDictionary.floorKey(aTerm);
if (floorKey != null && termComparator.compare(aTerm, floorKey) == 0) {
System.out.println(floorKey.getNumber()); // prints 55
}
如果你想同时获得键和值,使用floorEntry()
。
非常感谢,尽管我没有清楚地解释我自己,但你钉了它并给出了一个很好的答案。谢谢。只是一件事,什么是dictionaryTerm?在System.out.println()中;它应该是floorKey吗? –
是的,对不起,应该是floorKey – Mifeet