728x90
HashSet
Set에서 가장 많이 사용
순서x 중복x
LinkedHashSet
순서o
TreeSet
정렬 o
// add(E e):boolean
// addAll(Collection<? extends E> c) : boolean
HashSet<Dog> hSet = new HashSet<Dog>();
HashSet<Dog> hSet2 = new HashSet<>(); // 타입추론
hSet.add(new Dog("aa",10));
hSet.add(new Dog("bb",10));
System.out.println(hSet); // [aa 10.0kg, bb 10.0kg]
hSet2.add(new Dog("ㄷ",0));
// addAll도 맨 앞에 추가함
hSet2.addAll(hSet);
System.out.println(hSet2); // [aa 10.0kg, bb 10.0kg, ㄷ 0.0kg]
// add(Object e):boolean
// 순서x 중복x HashSet, add하면 어디에 추가될까?
// 맨 앞에 추가됨
hSet2.add(new Dog("ㄷ",0));
System.out.println(hSet2); // [aa 10.0kg, bb 10.0kg, ㄷ 0.0kg]
// set 중복 저장안되는데 중복 저장 되는 이유 : equals() 오버라이딩 안되어있어서
HashSet<String> set = new HashSet<>();
set.add("!");
set.add("!!");
set.add("!!");
System.out.println(set); // [!!, !] <- set 순서x 중복x
// LinkedHashSet
// 순서o 중복저장x 안되는 컬렉션
LinkedHashSet<Dog> linkSet = new LinkedHashSet<>();
linkSet.add(new Dog("가",0));
linkSet.add(new Dog("나",0));
System.out.println(linkSet); // [가 0.0kg, 나 0.0kg]
linkSet.add(new Dog("ㄱ",0));
linkSet.add(new Dog("A",-1));
System.out.println(linkSet); // [가 0.0kg, 나 0.0kg, ㄱ 0.0kg, A -1.0kg] <- 순서유지
// 중복 저장이 안된 이유?
// Dog클래스에 equals()를 오버라이딩 해줬기 때문에 내용비교가 가능하게 되었고
// 이 때문에 같은 객체로 인지되었기 때문
linkSet.add(new Dog("A",-1));
System.out.println(linkSet); // [가 0.0kg, 나 0.0kg, ㄱ 0.0kg, A -1.0kg]
System.out.println(linkSet); // [가 0.0kg, 나 0.0kg, ㄱ 0.0kg, A -1.0kg, A -1.0kg]
// HashSet<String>
// equals() 오버라이딩 필요x
// equals() 메소드 주석처리함
HashSet<String> sSet = new HashSet<String>();
HashSet<String> sSet2 = new HashSet<>();
sSet.add("set은");
sSet.add(" key저장");
sSet2.addAll(sSet);
System.out.println(sSet2); // [ key저장, set은]
sSet2.add("map은 key&value저장");
System.out.println(sSet2); // [map은 key&value저장, key저장, set은]
sSet2.clear();
System.out.println(sSet2); // []
sSet.remove("set은");
System.out.println(sSet); // [ key저장]
System.out.println(sSet.remove(" key저장")); // true
System.out.println(sSet); // []
sSet.add("a");
// TreeSet
// 정렬을 해주는 Set
TreeSet<String> tSet = new TreeSet<>();
tSet.add("ㄴ");
tSet.add("ㄱ");
tSet.add("ㄷ");
System.out.println(tSet); // [ㄱ, ㄴ, ㄷ] <- 추가 순서랑 다르게 sorting 되서 저장됨
tSet.add("ㄷ");
System.out.println(tSet); // [ㄱ, ㄴ, ㄷ] <- 중복x 정렬o
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Java] Array 8th practice (0) | 2022.08.30 |
---|---|
[1일1코딩][Java] 컬렉션 List 7th (0) | 2022.08.29 |
[1일1코딩][IDE] 인텔리제이 사용 및 익숙해지기 5th : 단축키 추가&변경, 단축명령어 익히기 (0) | 2022.08.27 |
[1일1코딩][Java] Collection : Set 1st practice (0) | 2022.08.27 |
[1일1코딩][IDE] 인텔리제이 사용 및 익숙해지기 4th : bin & src 폴더 + 변화점 (0) | 2022.08.26 |