0

Trove TIntObjectHashMap から、マップ内に存在して見つかった値のキーを取得する方法は??

if(map.containsValue(source)) {
        for (Entry<Integer, String> entry : map.entrySet()) { // entrySet() is not recognized by Trove? and i can not find any corresponding method ??
            if (entry.getValue().equals(source)) {
                entry.getKey();
        }
    }
}
4

2 に答える 2

1

私はこのようなことをします:

TIntObjectMap<String> map = new TIntObjectHashMap<>();
map.put( 1, "a" );
map.put( 2, "b" );

AtomicInteger found = new AtomicInteger( -1 );
map.forEachEntry( new TIntObjectProcedure<String>() {
    @Override
    public boolean execute( int key, String value ) {
        if ( value.equals( "a" ) ) {
            found.set( key );
            return false;
        }
        return true;
    }
} );
System.out.println( "Found: " + found.get() );

覚えておくべきこと:

  1. 明らかに、同じ値を持つ複数のキーが存在する可能性があります。
  2. forEach* メソッドは、Trove コレクションをトラバースする最も効率的な方法です。
  3. オブジェクトの割り当てがパフォーマンスの問題である場合は、手順を再利用できます。
  4. 「-1」(またはその他のもの)がマップの有効なキーである場合、別の AtomicBoolean を使用して、値が見つかったかどうかを示すことができます。
于 2014-09-30T13:53:59.017 に答える