HashSet과 ArrayList

20 Mar 2010

java

시간이 없으니 일단 짧게.

어떤 equals, hashCode가 구현된 Entity objectHashSet에 추가한 뒤, 그 object에 대한 reference 변수를 사용하여 저 두 함수의 결과에 영향을 주는 field 값을 변경할 경우,

  • HashSet은 contains가 false를 반환하는 반면,
  • ArrayList는 contains에서 true를 반환함.

ArrayList는 전체 대상에 대해 equals를 수행하지만, HashSethashCode 값을 가지고 검색을 하기 때문에 false가 반환된다.

Entity entity = new Entity("lacti", "lactrious@gmail.com");

set.add (entity);
entity.setName ("choi");
set.contains (entity); // false

list.add (entity);
entity.setName ("choi");
list.contains (entity); // true
comments powered by Disqus