2017-10-24 6 views
0

私はキャッシュされたmap.Andにいくつかのキーを見つけるコードのブロックを持っています
キーと値によってgetマップからキーと値を高速に戻す方法は?

private Map<String, Map<Character, Integer>> cache = new HashMap<>(); 
if (cache.containsKey(inputData)) { 
    return cache.get(inputData); 
} 

したがって、私は2つのオペアンプを見つけることができます。または私はそれをもっと速くすることができますか?

+0

あなたが取得してからヌルチェックをします。 –

+0

サンプルコードを書くことができますか? –

+0

キーが含まれていない場合は、何を返すのですか? –

答えて

1

get()メソッドを呼び出して、返された値をnullに比較するだけです。

final Map<Character, Integer> value = cache.get(inputData); 
if (value != null) { 
    return value; 
} 
+0

サンプルコードを書くことができますか? –

+0

私は、 'value'にfinalを使用せず、キャッシュに見つからなければ' value'を計算することをお勧めします。私は[ここ](https://stackoverflow.com/questions/46913657/how-to-return-key-and-value-from-map-faster/46913722#46913722) – Sridhar

1

お試しgetOrDefault

cache.getOrDefault(inputData, defaultValue); 

キーに対応する値があればそれを返します。そうでない場合は、デフォルト値が返されます。

また、getの時間複雑度はO(1)であるため、複雑さの点では、コードはかなり上手です。また、時期尚早の最適化はすべての悪の根源であることを忘れないでください。

+0

解説いただきありがとうございます。 –

関連する問題