[JAVA] 컬렉션(Collection API) 정리 (Set 계열/List 계열)

2020. 8. 3. 18:01Programming 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

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com


■ 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

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com

반응형