[JAVA] 컬렉션(Collection API) 정리 (Set 계열/List 계열)
2020. 8. 3. 18:01ㆍProgramming Language/JAVA
반응형
■ 컬렉션(Collection API)
- 배열과 다르게 하나의 컬렉션에 서로 다른 데이터형이 저장 가능하다.
- 참조 데이터 형만 저장가능하다. 기본 데이터형은 Wrapper 클래스를 이용하거나, 오토박싱으로 저장 가능하다.
- 객체인 데이터를 저장할 때마다 크기가 자동으로 늘어난다.
- 제네릭(Generic) 타입을 지원한다.
※ 대표적인 메서드
메서드 | 설명 |
boolean add(Object o) boolean addAll(Collection c) |
지정된 객체 또는 Collection의 객체들을 Collection 에 추가 |
void clear() | Collection의 모든 객체를 삭제 |
boolean isEmpty() | Collection이 비어있는지 확인 |
int size() | Collection에 저장된 객체의 갯수 |
Object[] toArray() | Collection에 저장된 객체를 배열로 변환 |
boolean contains(Object o) | Collection o 요소를 포함하고 있는지 반환 |
Iterator<E> iterator() | Collection에 저장된 데이터를 반복출력하기 위한 Iterator 인터페이스 반환. |
■ Set 계열
- 데이터의 저장 순서가 없기 때문에 중복 저장이 불가능하다.
- 저장된 위치를 알 수 없기 떄문에 위치값으로 데이터를 얻을 수 없다.
- 실제 구현된 HashSet 과 SortedSet 같은 클래스들을 이용하여 Set 계열을 사용할 수 있다.
1) add 메서드 - Set 요소 추가
// Set 객체 생성
Set<String> s = new HashSet<String>();
// Set에 요소 추가
s.add("HAN");
s.add("PARK");
s.add("KIM");
s.add("LEE");
s.add("HAN");
s.add("HAN");
// 중복된 요소는 제거된걸 알 수 있다.
System.out.println("toString 메서드 전체 출력 : " + s);
// ※ 출력 결과
// toString 메서드 전체 출력 : [HAN, LEE, KIM, PARK]
2) for-each 문 - Set 요소 확인
// for-each 문을 활용한 요소 출력
for(String name : s) {
System.out.println("foreach : " + name);
}
// ※ 출력 결과
/*
foreach : HAN
foreach : LEE
foreach : KIM
foreach : PARK
*/
3) Iterator 인터페이스 활용 - Set 요소 확인
// Iterator 를 활용한 요소 출력
Iterator<String> its = s.iterator();
while(its.hasNext()){
String name = its.next();
System.out.println("iterator : " + name);
}
// ※ 출력 결과
/*
iterator : HAN
iterator : LEE
iterator : KIM
iterator : PARK
*/
4) isEmpty 메서드, contains 메서드, size 메서드
- isEmpty : Set 요소가 비어있는지 확인 후 boolean 형으로 결과 반환
- contains : Set 요소에 포함되어 있는지 확인 후 boolean 형으로 결과 반환
- size : Set 요소의 갯수 확인 후 int 형으로 결과 반환
// Set의 요소가 비었는지 확인
System.out.println("Set가 비어있는가 ? " + s.isEmpty());
// Set의 확인하고자 하는 요소가 존재하는지 확인
System.out.println("Set에 HAN 요소가 존재하는가? " + s.contains("HAN"));
// Set의 요소의 갯수 확인
System.out.println("Set의 요소 갯수는 ? " + s.size());
// ※ 출력 결과
/*
Set가 비어있는가 ? false
Set에 HAN 요소가 존재하는가 ? true
Set의 요소 갯수는 ? 4
*/
5) remove 메서드, clear 메서드
- remove : Set에 요소명으로 삭제
- clear : Set에 전체 요소 삭제
// Set의 원하는 요소 삭제(순서가 없기 때문에 요소명으로 삭제한다)
s.remove("HAN");
System.out.println("HAN 요소를 삭제 후 데이터 확인 : " + s);
// Set의 전체요소 삭제
s.clear();
System.out.println("전체 요소를 삭제 후 데이터 확인: " + s);
// ※ 출력 결과
/*
HAN 요소를 삭제 후 데이터 확인 : [LEE, KIM, PARK]
전체 요소를 삭제 후 데이터 확인 : []
*/
SOURCE CODE
■ List 계열
- 데이터의 저장되는 순서가 있기 때문에 데이터가 중복 저장이 가능하다.
- 기본적으로 저장된 위치값을 사용할 수 있기 때문에 Set 계열 보다 다양한 기능을 처리할 수 있다.
※ 컬렉션 대표적인 메서드를 제외한 List 메서드
메서드 | 설명 |
Object get(int index) | List의 index위치에 있는 요소를 반환 |
void add(Object o) void add(int index, Object o) |
List에 순차적으로 추가 List의 index위치에 요소 o를 추가 |
void set(int index, Object o) | List의 index위치에 요소를 o로 수정 |
void remove(Object o) void remove(int index) |
List의 첫번째 위치부터 순서대로 확인하여, 요소 o 를 삭제 (한개) List의 index위치에 요소를 삭제 |
1) add 메서드 - List 요소 추가
// List 객체 생성
List<String> list = new ArrayList<String>();
// List에 요소 추가 (index를 지정하지 않으면 순차적으로 추가된다)
list.add("HAN");
list.add("PARK");
list.add("KIM");
list.add("LEE");
list.add("HAN");
list.add("HAN");
// List에 원하는 위치에 데이터 삽입
System.out.println("데이터 삽입 전 데이터 확인 : " + list);
list.add(1,"CHOI");
System.out.println("데이터 삽입 후 데이터 확인 : " + list);
// ※ 출력 결과
/*
데이터 삽입 전 데이터 확인 : [HAN, PARK, KIM, LEE, HAN, HAN]
데이터 삽입 후 데이터 확인 : [HAN, CHOI, PARK, KIM, LEE, HAN, HAN]
*/
2) for-each문, Iterator 인터페이스 활용 - List 요소 확인
// for-each 문을 활용한 요소 출력
for(String name : list) {
System.out.println("foreach : " + name);
}
// Iterator 를 활용한 요소 출력
Iterator<String> its = list.iterator();
while(its.hasNext()){
String name = its.next();
System.out.println("iterator : " + name);
}
// ※ 출력 결과
/*
foreach : HAN
foreach : CHOI
foreach : PARK
foreach : KIM
foreach : LEE
foreach : HAN
foreach : HAN
iterator : HAN
iterator : CHOI
iterator : PARK
iterator : KIM
iterator : LEE
iterator : HAN
iterator : HAN
*/
3) toArray 메서드 - List 객체를 배열로 변환
// List를 배열로 변환
Object[] arr = list.toArray();
System.out.println("List 객체를 배열로 변환 후 데이터 확인 : " + Arrays.toString(arr));
// ※ 출력 결과
// List 객체를 배열로 변환 후 데이터 확인 : [HAN, CHOI, PARK, KIM, LEE, HAN, HAN]
4) get 메서드, isEmpty 메서드, contains 메서드, size 메서드
- get : List 요소 중 index에 해당하는 요소 반환
- isEmpty : List 요소가 비어있는지 확인 후 boolean 형으로 결과 반환
- contains : List 요소에 포함되어 있는지 확인 후 boolean 형으로 결과 반환
- size : List 요소의 갯수 확인 후 int 형으로 결과 반환
// List의 첫번째 인덱스(0)의 요소 반환
System.out.println("List의 첫번째 인덱스 위치에 있는 요소는? " + list.get(0));
// List의 요소가 비었는지 확인
System.out.println("List가 비어있는가 ?" + list.isEmpty());
// List의 확인하고자 하는 요소가 존재하는지 확인
System.out.println("List에 HAN 요소가 존재하는가?" + list.contains("HAN"));
// List의 요소의 갯수 확인
System.out.println("List의 요소 갯수는 ?" + list.size());
// ※ 출력 결과
/*
List의 첫번째 인덱스 위치에 있는 요소는 ? HAN
List가 비어있는가 ? false
List에 HAN 요소가 존재하는가 ? true
List의 요소 갯수는 ? 7
*/
5) set 메서드 - List의 원하는 index의 요소값을 수정
// List에 원하는 위치에 데이터 삽입
System.out.println("데이터 수정 전 데이터 확인 : " + list);
list.set(1,"KANG");
System.out.println("데이터 수정 후 데이터 확인 : " + list);
// ※ 출력 결과
/*
데이터 수정 전 데이터 확인 : [HAN, CHOI, PARK, KIM, LEE, HAN, HAN]
데이터 수정 후 데이터 확인 : [HAN, KANG, PARK, KIM, LEE, HAN, HAN]
*/
6) remove 메서드, clear 메서드
- remove : List의 요소값 혹은 위치에 해당하는 요소를 삭제
- clear : List의 전체 요소 삭제
// List의 요소명으로 원하는 요소 삭제
list.remove("HAN");
System.out.println("HAN 요소 삭제 후 데이터 확인 : " + list);
// List의 요소의 인덱스로 원하는 요소 삭제
list.remove(0);
System.out.println("첫번째 인덱스의 요소 삭제 후 데이터 확인 : " + list);
// List의 전체요소 삭제
list.clear();
System.out.println("전체 요소 삭제 후 데이터 확인 : " + list);
// ※ 출력 결과
/*
HAN 요소를 삭제 후 데이터 확인 : [KANG, PARK, KIM, LEE, HAN, HAN]
첫번째 인덱스의 요소 삭제 후 데이터 확인 : [PARK, KIM, LEE, HAN, HAN]
전체 요소를 삭제 후 데이터 확인 : []
*/
SOURCE CODE
반응형
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] ArrayList 3가지 정렬 방법 정리 (Comparator 인터페이스/익명클래스/람다표현식) (0) | 2020.08.04 |
---|---|
[Eclipse] 이클립스(Eclipse) 한글 깨짐 현상 해결 (0) | 2020.08.04 |
[JAVA] 제네릭(Generic) 정리 (0) | 2020.08.03 |
[JAVA] 오버로딩(Overloading) 정리 (0) | 2020.08.01 |
[JAVA] 오버라이딩(Overriding) 정리 (0) | 2020.08.01 |