0

以下のコードを使用して、Google HashMultimap から値を取得して処理しています

    HashMultimap hmm = new HashMultimap();
    HashMultimap hmm2 = new HashMultimap();
    Element ele;
:
    hmm2.put("name","Amit");
    hmm.put("Amit",ele);
    hmm.put("rohit",hmm2);
 :   
    Iterator itr =  hmm.keys().iterator();
    String ky = (String) itr.next();
    System.out.println(hmm.get(ky));
    ky = (String) itr.next();
    System.out.println(hmm.get(ky));

上記のコードでは、マップ要素(またはエントリ)が要素タイプの場合、何らかの操作を実行したいと考えています。HashMultimap タイプの場合は、他の操作を行います。オブジェクトをチェックして別の関数に渡すにはどうすればよいですか。

4

2 に答える 2

2

これは でHashMultimapあり であるためSetMultimap、 を呼び出すとhmm.get(ky)、返されるSet値はそのキーのすべての値の になります。次に、の各値を反復処理して、それらの値Setを使用できるようにする必要がありinstanceofます。各キーに複数の値が存在しない場合は、最初から a を使用するべきではなく、Multimapnormal を使用する必要がありますHashMap

    HashMultimap hmm = HashMultimap.create();
    HashMultimap hmm2 = HashMultimap.create();
    Element ele = new Element();
    hmm2.put("name", "Amit");
    hmm.put("Amit", ele);
    hmm.put("rohit", hmm2);
    Iterator itr = hmm.keys().iterator();
    String ky = (String) itr.next();

    Set elements = hmm.get(ky);
    Iterator elementsItr = elements.iterator();
    Object val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

    ky = (String) itr.next();
    elements = hmm.get(ky);
    elementsItr = elements.iterator();
    val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

重要な点は、 a を呼び出すと、単一の値ではなく値のget()aHashMultimapが返されるということです。Set

于 2010-10-26T16:26:05.913 に答える
1

instanceof キーワードを使用します。

そのようです:
if (item instanceof Element) //Do things

于 2010-10-26T13:14:27.040 に答える