"텍스트"개체를 키로, "정수"개체를 값으로 사용하는 HaspMap이 있습니다. 값은 실제로 내 코드에서 키의 발생 횟수입니다. 그래서 처음으로 1이 될 것이고 계속 증가 할 것입니다. 아래에 코드가 나와 있습니다.새 키 값 쌍 추가 Java HashMap의 모든 값 대체
먼저 주어진 "텍스트"개체가지도에 있는지 확인합니다. 그렇지 않다면 값 1과 함께지도의 키로 추가합니다. 그러나 내가 직면하고있는 문제는 어떤 이유로 모든 "put"함수를 통해지도에 새 키와 값을 추가하면 맵에있는 이전에 존재하는 키/값 쌍이 새로운 것으로 대체됩니다. 코드는 아래와 같습니다.
그래서 기존의 키가 항상 else 문으로 이동했는지 확인합니다. 그러나 가치가 대체되고 있습니다. 출력 콘솔에서 나는 다음과 같은 출력을 얻고있다.
The new val outside isWelcome
Welcome
{Welcome=1}
The new val outside isservice service
{service=1, service=1}
The new val outside isversions versions
{versions=1, versions=1, versions=1}
The new val outside isto
to
{to=1, to=1, to=1, to=1}
The new val outside isproviders,
providers,
{providers,=1, providers,=1, providers,=1, providers,=1, providers,=1}
The new val outside isof of
{of=1, of=1, of=1, of=1, of=1, of=1}
The new val outside isthe the
{the=1, the=1, the=1, the=1, the=1, the=1, the=1}
The new val outside issome some
{some=1, some=1, some=1, some=1, some=1, some=1, some=1, some=1}
등등 ..
나는 이것을 원하지 않는다. 이전 키를 유지하는 새로운 키 값 쌍을 추가하기 만하면됩니다. 누군가 내가 잘못한 것을 알려주시겠습니까? 미리 감사드립니다.
텍스트가 equals/hashCode를 구현 했습니까? http://stackoverflow.com/questions/18032172/why-java-uses-equals-instead-of-to-check-an-objects-presence-in-a-map/18032235#18032235 –
이 애플리케이션의 경우 대신 Google Guava의 'Multiset'을 고려해야합니다. 그것은 개체 계산을위한 특수 컬렉션입니다. – chrylis