Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 구간합
- 백준
- function test
- 자바 람다식
- 슈더코드
- 백준 1235번
- Bean LifecCycle
- 2차원배열 구간합
- pseudo-code
- 상속과 참조
- ajax
- 생성자
- MariaDB Query Log
- this와 this() 차이
- this
- interrupted()
- 마리아DB 쿼리 로그
- 백준 11659번
- SQL
- 구간합구하기
- @NoArgsConstructor
- InterruptException
- Java
- map()
- select
- 합배열
- jquery
- @AllArgsConstructor
- 백준 11660번
- json
Archives
- Today
- Total
평범한 연구소
[JAVA] Set - HashSet, LinkedHastSet, TreeSet 본문
java.util.Set<E>
- 순서 유지X 데이터 집합
- 중복 X
- 하나의 null만 저장 가능
- 주요 구현 클래스: HashSet, LinkedHashSet, TreeSet
java.util.HashSet<E>
- 해시테이블에 의해 지원되는 Set 인터페이스 구현한 클래스
- 저장 순서 유지 X
- 중복 X
- 하나의 null만 저장 가능
- 멀티스레드 환경에서 동기화 X
java.util.LinkedHashSet<E>
- HashSet 하위 클래스
- 해시테이블과 linked list 구현한 Set
- 삽입 순서대로 저장
- 중복 X
- 멀티스레드 환경에서 동기화 X
java.util.TreeSet<E>
- SortedSet 인터페이스 구현한 클래스
- 정렬된 순서에 의해 반복
- 중복 X
- 멀티스레드 환경에서 동기화 X
- Comparable 인터페이스의 compareTo() 메소드나, Comparator 인터페이스의 compare() 메소드 사용해 모든 요소 비교. 따라서 TreeSet 요소는 Comparable 또는 Comparator 구현한 객체를 생성자에 인자로 넘겨 두 객체의 비교 방법 제공해야함. 그렇지 않으면 ClassCastException 런타임 오류.
Set 주요 메소드 예제
- set.add(): 요소 추가
- set.size(): 요소의 개수
- set.contains: 객체 존재 여부
- set.isEmpty(): 비어있는지 여부
- set.toArray(): 요소를 객체 배열로 리턴
- set.clear(): 전체 삭제
- set.remove(): 지정한 요소만 삭제
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("서울");
set.add("부산");
set.add("대구");
set.add("광주");
set.add("인천");
set.add("대전");
set.add("서울"); // 기존 서울을 덮는다.
System.out.println(set); // 등록 순서로 출력 되지 않는다.
for(String s : set) {
System.out.print(s+" ");
}
System.out.println();
}
TreeSet<> 예제
public class Ex04 {
public static void main(String[] args) {
// Set을 이용하여 로또 프로그램 작성
Set<Integer> set = lotto();
for(Integer n : set) {
System.out.print(n+" ");
}
System.out.println();
}
// 1~45사이의 수 6개 추출
public static Set<Integer> lotto() {
Set<Integer> set = new TreeSet<>();
Random rd = new Random();
while(set.size()<6) {
// set.add((int)((Math.random()*45)+1));
set.add(rd.nextInt(45)+1);
}
return set;
}
}
'JAVA > 기본 개념' 카테고리의 다른 글
[JAVA] HashMap 을 value로 정렬하기 (0) | 2022.11.19 |
---|---|
[JAVA] Map<E,K> - HashMap, LinkedHashMap, Hashtable, TreeMap, Properties (0) | 2022.08.06 |
[JAVA] 리스트 List - ArrayList, LinkedList, Vector (0) | 2022.08.03 |
[JAVA] 제네릭 generic (0) | 2022.08.03 |
[JAVA] 인터페이스 (0) | 2022.07.27 |