2016-05-15 35 views
0

私は、TreeMapでキーを取得して、そのキーの情報を取得するにはどうすればいいですか?例えば、私はTreeMapをこのように宣言しました:TreeMap、キーを取得して情報を取得する方法

TreeMap miniDictionary = new TreeMap<DictionaryTerm,Integer>(new TermComparator()); 

DictionaryTermはちょうど2つの変数、「文字列用語」と「int型の数を」持っているだけの単純なクラスです。 (> 25 - ( "レッド・ツェッペリン"、55):

はのは、TreeMapのは、すでにこのようなエントリを持っていると仮定しましょう

class TermComparator implements Comparator<DictionaryTerm> { 

@Override 
public int compare(DictionaryTerm e1, DictionaryTerm e2) { 
    return e1.getTerm().compareTo(e2.getTerm()); 
} 

}:

TermComparatorは、2つのキーを比較するためのクラスです。 LedZeppelin、55)が鍵であり、25がその価値である。

今の私は、この変数を持っているとしましょう:

DictionaryTerm aTerm = new DictionaryTerm("LedZeppelin",100); 

はどうすればTreeMapの中に「のaterm」ことを見つけて、それがその情報を読み取るためのキーを取得することができますか?私が作成したTermComparatorがString用語で比較されていることを考慮してください。

ありがとうございました。

答えて

2

と等しいと見なされるTreeMapからキーを取得することに興味があるとします。値を取得するのは簡単なので(miniDictionary.get(aTerm))です。

キーを取得するには、floorKey()を使用できます。 「そのようなキーが存在しない場合よりも少ないか、指定されたキーに等しい最大のキーを、または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

私は自分自身を明確に説明していませんでしたが、ありがとうございました。あなたはそれを釘付けにして素敵な答えをくれました。ありがとう。ちょっと、辞書の意味は? System.out.println();それはfloorKeyですか? –

+0

ええ、申し訳ありません、それはfloorKeyでなければなりません – Mifeet

関連する問題