4,563,002 th visitor since 2017.2.1 ( Today : 453 )
Programming
No. 394
Name. swindler
Subject. ArrayList, HashSet, HashMap, LinkedHashSet
Main Cate. Java
Sub Cate.
Date. 2007-09-28 15:31
Hit. 3532 (211.36.27.8)
File.
특정 데이터 배열을 유지하면서 반복적으로 계속 찾는 경우
가장 좋지 않은건 ArrayList 라고 봐야 된다.
(뭐 Vector가 당연히 더 느리긴 하겠지만.)

어쨌든
ArrayList 안에서 데이터를 찾기 위해서는 full scan 외에 방법이 없다.
O(N) 되겠네.

HashSet을 사용하게 되면
실제로 내부적으로는 HashMap을 사용하는데 (Value에는 빈 object를 넣는다.)

HashMap의 containsKey 부분을 찾아보면
해쉬값으로 검색한번 해 주기도 하고

참, containsKey에 대한 정의가 좀 애매할수가 있는데,

소스상에는 정확히 이렇게 되어 있다.

static boolean eq(Object x, Object y) {
return x == y || x.equals(y);
}


따라서, 따로 개발한 Class를 넣는경우에는
equals를 override해서 구현해야 한다.
이 경우 hashCode()를 먼저 호출해서 같은 경우에만 equals()를 호출하므로,
hashCode() 또한 구현해야 한다.


LinkedHashSet의 경우 HashSet과 비슷하나, 순서가 유지된다.

[바로가기 링크] : http://coolx.net/cboard/develop/394



Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog