728x90
Collection
Set
인터페이스 Set의 주요 클래스
HashSet
LinkedHashSet
TreeSet
add(E e)
add(Object e):boolean
package controller;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.TreeSet;
import model.vo.pModelVo02;
public class pController02 {
public void firstR() {
HashSet<pModelVo02> hs = new HashSet<>();
System.out.println("====HashSet====");
hs.add(new pModelVo02("name",1));
hs.add(new pModelVo02("dont",2));// 순서x
hs.add(new pModelVo02("dont",2));// 중복x
System.out.println(hs); // 주소값달라서 중복됨
// 중복 가능케 할려면?
// model 데이터에서 오버라이딩or 이미되었는 String,Integer클래스 사용
HashSet<String> strs = new HashSet<>();
strs.add(new String("a")); // 모델에서 세팅값의 Set이 아니라서
strs.add(new String("b")); // 값이 문자열 하나
strs.add(new String("b")); // 중복x
System.out.println(strs);
System.out.println("====LinkedHashSet====");
// LinkedHashSet
// 순서유지되는 set
// add(Object e):boolean
// 리턴 : 트루반환
LinkedHashSet<pModelVo02> lhs = new LinkedHashSet<>();
lhs.add(new pModelVo02("1",1)); // 순서O
lhs.add(new pModelVo02("2",2)); // 중복x 이나 주소값 달라 중복됨
lhs.add(new pModelVo02("2",2)); // [(1-1), (2-2)] model에서 오버라이딩 후 중복x
System.out.println(lhs); // [(1-1), (2-2)]
System.out.println(lhs.add(new pModelVo02("3",3))); // true
System.out.println(lhs); // [(1-1), (2-2), (3-3)]
System.out.println("====TreeSet====");
// TreeSet
// 정렬가능 set
TreeSet<pModelVo02> ts = new TreeSet<>(lhs);// 정렬할 set값 넣기
System.out.println(ts); // error : comparable x
// 에러원인 : 정렬기준점인 comparable없음
// 에러메세지 : The type pModelVo02 must implement the inherited abstract method Comparable.compareTo(Object)
// compareTo(Object o) 후 정상작동
ts.iterator(); // 반복자iterator를 오름차순으로 반환
System.out.println(ts);
Iterator<pModelVo02> it = lhs.iterator(); // iterator 인덱스 없다
while(it.hasNext()) {
pModelVo02 p = it.next();
System.out.println(p);
}
// String클래스에 comparable이 이미 오버라이딩 되어있어서 정상작동
TreeSet<String> trs = new TreeSet<>();
trs.add(new String("a")); // set 중복x
trs.add(new String("a"));
trs.add(new String("d")); // 정렬
trs.add(new String("c"));
trs.add(new String("b"));
System.out.println(trs); // [a, b, c, d]
// TreeSet<pModelVo02> tss = new TreeSet<>(lhs); // error : java.lang.ClassCastException
// System.out.println(tss);
}
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩] [Java] Collection - Map - HashMap (0) | 2022.03.07 |
---|---|
[1일1코딩] [Java] Collection - Map - TreeMap (0) | 2022.03.06 |
[1일1코딩] [Java] ArrayList의 메소드 : add,remove,contains, indexOf, get,set (0) | 2022.03.04 |
[1일1코딩] [Java] LinkedHashSet, HashSet, TreeSet (0) | 2022.03.03 |
[1일1코딩] [Java] MVC패턴 이해 - 소소하게 짜보기 (0) | 2022.03.02 |