여러 데이터들을 그룹으로 묶어 놓은것.
메소드를 통해 관리 하기 편하다.
컬렉션 프레임워크 메소드는 그때그때 필요한걸 찾아서 쓰자.
List : 데이터 순서가 유지 된다.중복 저장이 가능 (ArrayList,LinkedList)
Set : 데이터의 순서가 유지되지 않으며, 중복 저장이 불가능 (HashSet, TreeSet )
Map : 키(key)와 값(value)의 쌍으로 데이터를 저장, 데이터 순서 유지 X 키는 중복 저장 X 값은 중복 저장 가능
그리고, List와 Set은 서로 공통점이 많아 위 그림과 같이 Collection이라는 인터페이스로 묶입니다
배열과 같이 객체를 일렬로 놓는 구조.
객체를 저장하면 자동으로 인덱스가 부여되고, 인덱스로 객체를 검색, 추가, 삭제할 수 있는 등의 여러 기능을 제공합니다.
Vector,ArrayList,LinkedList도 있는데 Vector는 안쓴다.
배열과 같지만, 저장 용량이 초과하면 자동으로 용량이 늘어난다.
데이터 순서는 유지되며, 데이터는 중복 가능하다.
ArrayList<타입 매개변수> 객체명 = new ArrayList<타입 매개변수>(초기 저장 용량);
ArrayList<String> container1 = new ArrayList<String>();
// String 타입의 객체를 저장하는 ArrayList 생성
// 초기 용량이 인자로 전달되지 않으면 기본적으로 10으로 지정됩니다.
ArrayList<String> container2 = new ArrayList<String>(30);
// String 타입의 객체를 저장하는 ArrayList 생성
// 초기 용량을 30으로 지정하였습니다.
이 컬렉션은 데이터를 효율적으로 추가, 삭제, 변경하기 위해 사용합니다.
링크를 끊어 주는 방식이라 데이터를 중간에 추가하거나 삭제하는 경우 처리 속도가 빠르다.
하지만, 데이터 검색은 ArraList보다 느리다.
그래서 데이터의 잦은 변경이 예상된다면 LinkedList를, 데이터의 개수가 변하지 않는다면 ArrayList를 사용하는게 좋다.
요소의 중복을 허용하지 않고, 저장 순서를 유지하지 않는 컬렉션입니다.
HashSet, TreeSet이 있습니다.
중복된 값을 허용하지 않으며, 저장 순서를 유지하지 않습니다.
HashSet<String > languages = new HashSet<String>();
이진 탐색 트리 형태로 데이터를 저장합니다.
데이터의 중복 저장을 허용하지 않고 저장 순서를 유지하지 않는다.
하나의 부모 노드가 최대 두 개의 자식 노드와 연결되는 이진 트리(Binary Tree)의 일종으로, 정렬과 검색에 특화된 자료 구조입니다.
모든 왼쪽 자식의 값이 루트나 부모보다 작고, 모든 오른쪽 자식의 값이 루트나 부모보다 큰 값을 가지는 특징이 있습니다. ->자동으로 오른차순
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
// TreeSet 생성
TreeSet<String> workers = new TreeSet<>();
// TreeSet에 요소 추가
workers.add("Lee Java");
workers.add("Park Hacker");
workers.add("Kim Coding");
System.out.println(workers);
System.out.println(workers.first());
System.out.println(workers.last());
System.out.println(workers.higher("Lee"));
System.out.println(workers.subSet("Kim", "Park"));
}
}
HashMap<String, Integer> hashmap = new HashMap<>();