컬렉션 프레임워크(collection framework)란?
컬렉션 프레임워크(collection framework)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미
즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것
이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됨
컬렉션 프레임워크 주요 인터페이스

위의 그림에서 <E>나 <K, V>라는 것은 컬렉션 프레임워크를 구성하는 모든 클래스가 제네릭으로 표현되어 있음
List : 순서가 있는 데이터의 집합 ArrayList, LikeList
Set : 순서가 없는 데이터의 집합 데이터 중복x Hashset
Map : key &value 데이터의 집합 HashMap
인터페이스 | 설명 | 구현 클래스 |
List<E> | 순서가 있는 데이터의 집합으로, 데이터의 중복을 허용함. | Vector, ArrayList, LinkedList, Stack, Queue |
Set<E> | 순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않음. | HashSet, TreeSet |
Map<K, V> | 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음. 이때 키는 중복을 허용하지 않지만, 값은 중복될 수 있음. |
HashMap, TreeMap, Hashtable, Properties |
* List 의 Stack은 시스템 친화적 후입선출, 일반은 선입선출
ArrayList의 단점 보완 ->LinkedList
remove(Object o) < 프리미티어X 레퍼클래서 타입O
remove(int index)
<프레임 워크의 사용법!> 컬렉션 프레임 워크 리스트
사용 | add | remove | contains | get | size | set | new |
설명 | 추가 | 제거 | true/false 있나없나(중복검사용) |
index안에 있는 값 memory 주소값 데이터 읽기(가져오기) |
length | 교체,수정 | 생성 |
ex )데이터를 추가 할 위치까지 지정
accountList.add(0,new AccountEx("급여통장2", 111111)); //0번 위치에 밀어 넣는 것
1. Arraylist <- 순차조회를 많이 하면 이거
// 순차 조회 전용 for 문 (일반배열 조회 에도 사용가능)
for(AccountEx a : accountList) {
a.showInfo();
}
\// 우리가 해왔던 조회 방법
for(int i=0; i<accountList.size(); i++){
accountList.get(i).showInfo();
}
* ArrayList 예제
import java.util.ArrayList;
import java.util.List;
public class CollectionEx {
public static void main(String[] args) {
Integer[] arr = {10, 20, 30};
List<Integer> list = new ArrayList<Integer>(); //**젤많이씀 데이터 순차조회 //**수정은 데이터베이스에서 써요
list.add(10);
list.add(20);
list.add(30);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
System.out.println("-----------------------------------");
list.add(40);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
System.out.println("-----------------------------------");
// list.remove(30); // 30번째 데이터 삭제 - 범위 넘어섬 remove(int index)// ** remove 주의 요망
// Integer rm = 30; // 30이라는 값을 삭제하고 싶을 때 //remove(Object o)
// list.remove(rm);
list.remove(2);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
Integer target = 30;
// 현재 list에 Integer 값 30이 있는가? // 중복검사하기 쉽쥬?
System.out.println(list.contains(target));
List<Integer> list2 = new ArrayList<Integer>();
list2.add(10); // 10 10 X(remove)
list2.add(40); // 20 --> 20 만 남음 ( list.에서 removeAll(list2 에 있는것)) 결과 20남음
list.removeAll(list2); // 40 40 X(remove) (교집합제거)동일한 값만 제거/ 안에 들어있는 것만 제거
System.out.println(list); // list list2
}
}
2. LinkedList <- 수정이 많이 일어날거 같으면 이거
-> 둘중에 아무거도 해도 되! 컴터가 좋아져서
* LinkedList 예제
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class CollectionEx {
public static void main(String[] args) {
Integer[] arr = {10, 20, 30};
List<Integer> list = new LinkedList<Integer>(); //**젤많이씀 데이터 순차조회 //**수정은 데이터베이스에서 써요
list.add(10);
list.add(20);
list.add(30);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
System.out.println("-----------------------------------");
list.add(40);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
System.out.println("-----------------------------------");
// list.remove(30); // 30번째 데이터 삭제 - 범위 넘어섬 remove(int index)// ** remove 주의 요망
// Integer rm = 30; // 30이라는 값을 삭제하고 싶을 때 //remove(Object o)
// list.remove(rm);
list.remove(2);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
Integer target = 30;
// 현재 list에 Integer 값 30이 있는가? // 중복검사하기 쉽쥬?
System.out.println(list.contains(target));
List<Integer> list2 = new ArrayList<Integer>();
list2.add(10); // 10 10 X(remove)
list2.add(40); // 20 --> 20 만 남음 ( list.에서 removeAll(list2 에 있는것)) 결과 20남음
list.removeAll(list2); // 40 40 X(remove) (교집합제거)동일한 값만 제거/ 안에 들어있는 것만 제거
System.out.println(list); // list list2
}
}
3. Vector <- 우리가 썻던 배열과 같다 (사용방법은 위와 같다)
*Vector 예제
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;
public class CollectionEx {
public static void main(String[] args) {
Integer[] arr = {10, 20, 30};
List<Integer> list = new Vector<Integer>(); //**젤많이씀 데이터 순차조회 //**수정은 데이터베이스에서 써요
list.add(10);
list.add(20);
list.add(30);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
System.out.println("-----------------------------------");
list.add(40);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
System.out.println("-----------------------------------");
// list.remove(30); // 30번째 데이터 삭제 - 범위 넘어섬 remove(int index)// ** remove 주의 요망
// Integer rm = 30; // 30이라는 값을 삭제하고 싶을 때 //remove(Object o)
// list.remove(rm);
list.remove(2);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
Integer target = 30;
// 현재 list에 Integer 값 30이 있는가? // 중복검사하기 쉽쥬?
System.out.println(list.contains(target));
List<Integer> list2 = new ArrayList<Integer>();
list2.add(10); // 10 10 X(remove)
list2.add(40); // 20 --> 20 만 남음 ( list.에서 removeAll(list2 에 있는것)) 결과 20남음
list.removeAll(list2); // 40 40 X(remove) (교집합제거)동일한 값만 제거/ 안에 들어있는 것만 제거
System.out.println(list); // list list2
}
}
하나만 익혀놓으면 사용방법이 같음!
참고 사이트
http://www.tcpschool.com/java/java_collectionFramework_concept
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
'JAVA SPRING > java' 카테고리의 다른 글
JAVA_009) 클래스외부(패키지,임포트), 자바제어자(public,protected,default,private), Static (0) | 2023.04.26 |
---|---|
JAVA_008) 클래스와 객체, 클래스의 내부 구성요소(생성자, this키워드, this()메서드) (0) | 2023.04.25 |
JAVA_006) 객체지향개념_3 개념적인 메소드 설계&실행2 (0) | 2023.03.16 |
JAVA_005) 객체지향개념_2 개념적인 메소드 설계&실행 (0) | 2023.03.16 |
JAVA_004) 객체지향개념 (0) | 2023.03.16 |