Map.containsValue()はfalseを返します

アルンPalanisamy:

私は以下のようなマップを持っています:

final Map<myobj,Set<String>> existingNames = this.getExistingCIs(_actual,_names.keySet());

これは、返されます。

{myobj43c0e17f0100000606@3508cfdf=[Immutable]}

私は、マップ値が、私はさらにロジックをやろうとしている文字列「不変」が含まれているかどうかを確認しようとしています。しかし、existingNames.containsValue("Immutable")スローfalse

if (existingNames.containsValue("Immutable")) { 
    // mylogic
}

それはのためにありますかSet<String>もしそうならどのようにこれを確認するには?私は比較しながら、私が何かを間違った操作を行うと思います。私は、Javaの基本的な知識を持っていないことを確認セットに変換する方法文字列をチェックします。

ernest_k:

かどうかをチェックするための簡単な方法任意のセットが含まれている値です

existingNames.values().stream().anyMatch(s -> s.contains("Immutable"))

あなたはセットであることを確認したい場合はシングルトン文字列を含む、あなたはセットインラインを作成することができます。

existingNames.containsValue(Collections.singleton("Immutable"))

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=313941&siteId=1