본문 바로가기
Java (국비)/Java 이론

컬렉션 프레임워크 (집합 (Set))

by Hwanii_ 2023. 5. 19.
728x90

"데이터 묶음"  (== "컬렉션")

 

Set (집합)

 

1. Set은 추상클래스라 객체 생성이 불가능 하다.

2. Set류의 조상 클래스 이다.

 

특징 :

1. 순서가 없다. (index 개념이 없다)

2. 중복 허용이 불가능 하다.

3. 배열리스트와 마찬가지로 다양한 자료형 저장이 가능하지만,

=> 반드시, 서로 같은 자료형만 취급 한다.

4. 제네릭 <> 을 사용해 집합에 저장될 타입을 강제화 한다.

 

Set data = new Set(); => 에러 발생

추상 클래스라 객체 생성 불가능.

 

Set 추상클래스의 자손클래스로,

HashSet 이라는 클래스가 있다.

 

 

사용예시 :

 

1. 집합에 숫자 10을 넣어 준다.

2. 숫자 10은 총 3개

3. String 타입의 "apple"은 int 타입으로 제너릭 해줬기 때문에 "에러"가 뜨게 된다.

 

결과 :

Console

 

1. 중복값 10은 전부 허용이 되지 않아, 한개만 존재.

2. 순서가 없기 때문에 (index가 없기 때문에)

마구잡이로 값이 저장된 모습을 볼 수 있다.

 

예제 :

1. 10개의 랜덤수를 생성 하기.

2. 범위는 1 ~ 15까지 이고,

3. 중복을 제외하고 생성된 랜덤수의 "개수"와 저장된 랜덤값(숫자)를 출력 하기.

 

 

Console

결론 :

 

1. for문을 10번 루프하면서 1에서 15까지의 범위의 랜덤 수를 data 집합에 저장하는 코드.

2. 하지만, 결과는 6개만 저장 되었다.

3. 중복값은 저장이 되지 않음을 알 수 있다.

4. 집합은 인덱스가 없어서 마구잡이로 저장이 된다고 했는데,

이클립스 화면을 보면 뭔가 순서대로 저장이 된 느낌이 든다.

숫자의 범위가 작아서 우연의 일치일 뿐 이다.

 

숫자의 범위를 크게 잡고 결과를 보면,

 

 

뒤죽박죽 섞여서 저장된 것을 볼 수 있다.

 

정렬을 하고 싶다 ? => ArrayList 를 사용하는게 효율

반응형