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
반응형

+ Recent posts