"์ค๋ณต์ด ์๋ ์งํฉ(Set)"์ ์์ฃผ ํจ์จ์ ์ผ๋ก ๊ตฌํํ ๋ํ์ ์ธ ์ปฌ๋์
-> ๋ด๋ถ์ ์ผ๋ก๋HashMap์ ์ฌ์ฉํจ
public class HashSet<E> {
private transient HashMap<E,Object> map;
private static final Object PRESENT = new Object();
}
HashMap์ keyPRESENT)set.add("A");
๋ด๋ถ์ ์ผ๋ก๋
map.put("A", PRESENT);
hashCode()๊ฐ ๊ฐ๊ณeqauals()๊ฐ true -> ์ค๋ณต
ํ๊ท ์๊ฐ ๋ณต์ก๋ O(1)
ํด์ ๊ธฐ๋ฐ ์ ๊ทผ -> ์์ฐจ ํ์X
= ๋ฆฌ์คํธ์ฒ๋ผ ์ฒ์๋ถํฐ ๋๊น์ง ์ ๋ด
hashCode๋ก ํ์ ๋ฒ์๋ฅผ ๊ทน๋จ์ ์ผ๋ก ์ค์
List-> ์ต๋ N๋ฒ ๋น๊ต
HashSet-> ํน์ ๋ฒํท๋ง ํ์ธ
equals๋ "ํ์ํ ๋๋ง" ํธ์ถ๋จ
hashCode๊ฐ ๋ค๋ฅด๋ฉด equals์กฐ์ฐจ ์ ํ๋ค๋ ๋ป
O(n) : ๋ฐ์ดํฐ๊ฐ ๋์ด๋๋ฉด ๊ทธ๋งํผ ๋ ๋ง์ด ์ผ์ ํจ
O(log n) : ๋ฐ์ดํฐ๊ฐ ๋์ด๋๋ ์กฐ๊ธ๋ง ๋ ์ผ์ ํจ
์ด๋์ฅ์ 100๋ง ๋ช ์ด ์ ์๊ณ , ๊ทธ์ค ํ ๋ช ์ ์ฐพ๊ธฐ ์ํด ์ฒ์๋ถํฐ ๋๊น์ง ํ์ธํ๋ ๊ฒ
ex) ์ถ์๋ถ๋ก ์ด๋ฆ ์ฐพ๊ธฐ, ๋ฆฌ์คํธ์์ ํน์ ๊ฐ ์ฐพ๊ธฐ (์ ํ ํ์)
์ฌ์ (์ ๋ ฌ๋ ์ํฉ)์์ ์ด๋ฆ ์ฐพ๊ธฐ
ex) ์ด๋ถ ํ์, ํธ๋ฆฌ ํ์, Hash ๊ตฌ์กฐ์ ๋ด๋ถ ๋ก์ง ์ผ๋ถ
๐ ๊ธฐ์ค