TreeMap,如何获取密钥以获取其信息

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()

+0

非常感谢,尽管我没有清楚地解释我自己,但你钉了它并给出了一个很好的答案。谢谢。只是一件事,什么是dictionaryTerm?在System.out.println()中;它应该是floorKey吗? –

+0

是的,对不起,应该是floorKey – Mifeet