본문 바로가기

JAVA

Set

//Set 계열

- 순서가 없는 배열

- 첨자가 없음

- 중복값을 가질 수 없다.


//HashSet

- Set 인터페이스 구현한 컬렉션

- 순서X, 중복값X


//Set은 순서가 중요하지 않은 집합으로 모든 요소 출력시 정렬되지 않은 상태로 출력


예제) 로또 번호 추출

1. ArrayList


ArrayList<Integer> nums = new ArrayList<Integer>();

Random rnd = new Random();


for(int i=0;i<6;i++){

int num = rnd.nextInt(45)+1; //1~45


boolean flag = false;


for(int j=0;i<i;j++){

if(num==num1.get(j)) { 난수 발생시 중복 숫자 X

flag = true;

break;

}

}


if(flag){

i--;

}else{

nums1.add(num);

}

}

System.out.println(nums1); //ArrayList요소 전체 출력



2. HashSet


HashSet<Integer> set = new HashSet<Integer>();


while(set.size()<6){ //6번 돌리는데 HashSet은 중복이 없기 떄문에 중복숫자 발생 X


int num= rnd.nextInt(45)+1;

set.add(num);

}


System.out.println(set); // HashSet요소 전체 출력


---------------------------------------------------

** set(HashSet) -> List<ArrayList<String>(set);


System.out.println(list);


Collection.sort(list); //정렬


System.out.println(list);


--------------------------------------------------------

예제) 합집합,교집합,차집합 구하기


//데이터 집합 2개

Set<String> setA = new HashSet<String>();

Set<String> setB = new HashSet<String>();


//결과 집합

Set<String> setHab = new HashSet<String>();

Set<String> setGyo = new HashSet<String>();

Set<String> setCha = new HashSet<String>();


setA.add("사과");

setA.add("오렌지");

setA.add("파인애플");

setA.add("바나나");

setA.add("아보카도");


setB.add("자두");

setB.add("파인애플");

setB.add("토마토");

setB.add("귤");

setB.add("바나나");


///교집합

Iterator<String> iter = setA.iterator();


while(iter.hasNext()){

String item = iter.next();


if(setB.contains(item)){
    setGyo.add(item);
}

}


System.out.println("A ∩ B = " + setGyo);


//차집합

iter = setA.iterator();

while(iter.hasNext()) {

String item = iter.next();

if(!setB.contains(item)) {

setCha.add(item);

}

}//while

System.out.println("A - B = " + setCha);


//합집합 - 중복값을 허용하는 합집합 ->set(X), List(0);

LIst<String> listHab = new ArrayList<String>();


iter = setA.iterator();


while(iter.hasNext()){

String item = iter.next();

listHab.add(item);


}


iter = setB.iterator();


while(iter.hasNext(){

String item = iter.next();

listHab.add(item);

}

System.out.println("A ∪ B = " + listHab);


'JAVA' 카테고리의 다른 글

Treemap  (0) 2018.08.08
TreeSet  (0) 2018.08.08
Enumeration,열거형  (0) 2018.08.08
Stack예제  (0) 2018.08.08
Queue예제  (0) 2018.08.07