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 |
|
|
|
[Modify] [Delete] | [Reply] [List] |