== Why is this an issue? Two "hash" classes, ``++Hashtable++``, and ``++ConcurrentHashMap++`` offer ``++contains++`` methods. One might naively assume that the ``++contains++`` method searches both keys and values for its argument. And one would be wrong. Because these legacy methods search only values, they are likely to mislead maintainers even if the original coder understood precisely what's going on. === Noncompliant code example [source,java] ---- Hashtable ht = new Hashtable<>(); // ... if (ht.contains(foo)) { // Noncompliant // ... } ---- === Compliant solution [source,java] ---- Hashtable ht = new Hashtable<>(); // ... if (ht.containsValue(foo)) { // ... } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Use "containsValue" instead. === Highlighting ``++contains++`` ''' == Comments And Links (visible only on this page) === on 14 Jul 2016, 20:39:16 Ann Campbell wrote: https://github.com/google/error-prone/blob/master/docs/bugpattern/HashtableContains.md === on 15 Jul 2016, 09:48:30 Freddy Mallet wrote: According to following statement [~ann.campbell.2] "they are likely to mislead maintainers even if the original coder understood precisely what's going on", this sounds to be more a Critical or Blocker Code Smells than a Bug. === on 15 Jul 2016, 14:21:25 Ann Campbell wrote: I disagree [~freddy.mallet]. That statement gives the original coder the benefit of the doubt, but with a significant eye-roll. "_even if_ the original coder understood..." I can reword if you like. endif::env-github,rspecator-view[]