Android Java - ключ такой же, но содержит ключ вернуть false - PullRequest
0 голосов
/ 15 марта 2019

Я должен поместить значения в LinkedHashMap.(потому что я хочу сортировку и определение, если уже есть значения)

Я думал, что containsKey вернет true, если значения String такие же, как temp и temp2 .Однако testMap.put (temp2,8); запущен.

Я не знаю почему.Если это не правильный ответ, Как я могу сохранить или получить доступ к значениям быстрым способом ??

 public class TestClass{
        public String one;
        public String two;
        TestClass(String one, String two){
            this.one=one;
            this.two=two;
        }
    }
    public void testPersonWord(){
        LinkedHashMap<TestClass, Integer> testMap= new LinkedHashMap<>();
        TestClass temp= new TestClass("hdy","hello");
        testMap.put(temp,3);
        TestClass temp2= new TestClass("hdy","hello");
        if(testMap.containsKey(temp2)){
            testMap.replace(temp2,5);
        }else{
            testMap.put(temp2,8);
        }
    }

1 Ответ

0 голосов
/ 15 марта 2019

Вот метод containKey.hashCode используется для сравнения, так что определенно hashCode двух объектов является разницей, поэтому он не может быть равным.
Вы можете использовать примитивный ключ или использовать TestClass.getOne () для сравнения String.

/**
 * Returns <tt>true</tt> if this map contains a mapping for the
 * specified key.
 *
 * @param   key   The key whose presence in this map is to be tested
 * @return <tt>true</tt> if this map contains a mapping for the specified
 * key.
 */
public boolean containsKey(Object key) {
    return getNode(hash(key), key) != null;
}

Надеюсь, это поможет!

...