[ java] 컬렉션 프레임워크

이동엽·2023년 1월 8일
0

컬렉션 프레임워크

여러 데이터들을 그룹으로 묶어 놓은것.
메소드를 통해 관리 하기 편하다.
컬렉션 프레임워크 메소드는 그때그때 필요한걸 찾아서 쓰자.

List : 데이터 순서가 유지 된다.중복 저장이 가능 (ArrayList,LinkedList)
Set : 데이터의 순서가 유지되지 않으며, 중복 저장이 불가능 (HashSet, TreeSet )
Map : 키(key)와 값(value)의 쌍으로 데이터를 저장, 데이터 순서 유지 X 키는 중복 저장 X 값은 중복 저장 가능

그리고, List와 Set은 서로 공통점이 많아 위 그림과 같이 Collection이라는 인터페이스로 묶입니다

List

배열과 같이 객체를 일렬로 놓는 구조.
객체를 저장하면 자동으로 인덱스가 부여되고, 인덱스로 객체를 검색, 추가, 삭제할 수 있는 등의 여러 기능을 제공합니다.
Vector,ArrayList,LinkedList도 있는데 Vector는 안쓴다.

ArrayList

배열과 같지만, 저장 용량이 초과하면 자동으로 용량이 늘어난다.
데이터 순서는 유지되며, 데이터는 중복 가능하다.

ArrayList<타입 매개변수> 객체명 = new ArrayList<타입 매개변수>(초기 저장 용량);

ArrayList<String> container1 = new ArrayList<String>();
// String 타입의 객체를 저장하는 ArrayList 생성
// 초기 용량이 인자로 전달되지 않으면 기본적으로 10으로 지정됩니다. 

ArrayList<String> container2 = new ArrayList<String>(30);
// String 타입의 객체를 저장하는 ArrayList 생성
// 초기 용량을 30으로 지정하였습니다. 

LinkedList

이 컬렉션은 데이터를 효율적으로 추가, 삭제, 변경하기 위해 사용합니다.
링크를 끊어 주는 방식이라 데이터를 중간에 추가하거나 삭제하는 경우 처리 속도가 빠르다.
하지만, 데이터 검색은 ArraList보다 느리다.

그래서 데이터의 잦은 변경이 예상된다면 LinkedList를, 데이터의 개수가 변하지 않는다면 ArrayList를 사용하는게 좋다.

Set< E >

요소의 중복을 허용하지 않고, 저장 순서를 유지하지 않는 컬렉션입니다.
HashSet, TreeSet이 있습니다.

HashSet

중복된 값을 허용하지 않으며, 저장 순서를 유지하지 않습니다.

 HashSet<String > languages = new HashSet<String>();

TreeSet

  • 이진 탐색 트리 형태로 데이터를 저장합니다.

  • 데이터의 중복 저장을 허용하지 않고 저장 순서를 유지하지 않는다.

  • 하나의 부모 노드가 최대 두 개의 자식 노드와 연결되는 이진 트리(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"));
    }
}

Map <K,V>

  • 키(key)와 값(value)으로 구성된 객체를 저장하는 구조를 가지고 있습니다.
  • 이 객체를 Entry객체라고 한다.
  • 이 Entry 객체는 키와 값을 각각 Key 객체와 Value 객체로 저장합니다.
  • 키는 중복 안되지만 값은 중복 가능하다. 만약 동일한 키로 다른값을 저장하면 새로운 값으로 덮어진다.

Hashmap

  • 키와 값으로 구성된 객체를 저장하는데, 이 객체를 Entry 객체라고 한다.
  • 해시 함수를 통해 키와 값이 저장되는 위치를 결정되기에 사용자는 그위치를 알수 없고, 삽입 되는 순서와 위치 또한 관계없다.
  • 해싱을 사용하기에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능 보임.
HashMap<String, Integer> hashmap = new HashMap<>();
profile
씨앗

0개의 댓글