ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 학원 DAY 21. Collection 컬렉션
    기록 2022. 10. 5. 23:24

    Collections Framework 

    컬렉션 : 여러 객체(데이터)를 모아 놓은 것

     

    프레임웍 : 표준화, 정형화된 체계적인 프로그래밍 방식

     

    컬렉션 프레임웍 :

    - 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식

    - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공

    - java.util패키지에 포함

     

    컬렉션 클래스 :

    - 다수의 데이터를 저장할 수 있는 클래스 (Vector, ArrayList, HashSet 등)

     

    < 자바의 자료구조 특징 >

    - Collection<E>의 구현체다.

      (구현클래스와 상관없이 저장/삭제/조회 등의 작업을 동일한 방법으로 실행한다.)

    - 내부저장소가 있고, 객체만 저장할 수 있다.

    - 크기가 가변적이다

    (저장위치 position을 관리할 필요가 없다.)

    (저장하거나 삭제하면 자동으로 저장용량이 증가되거나 줄어든다.)

    - 자료구조에 저장된 객체를 하나씩 처리할 때는 향상된 for문을 사용한다. (java8부터는 Stream<E>을 사용하기도 한다.)

     

    Collection<E> 인터페이스

    모든 자료구조 클래스의 최상위 인터페이스다.

    자바의 모든 자료구조 구현 클래스는 Collection 인터페이스를 구현한 클래스

    컬렉션 인터페이스는 자바의 자료구조 구현클래스가 반드시 구현할 기능을 정의한다.

     

    주요 메소드

    boolean add(E e)

    자료구조에 새로운 요소를 추가한다.

    boolean addAll(Collection<? extends E> c)

    자료구조에 다른 자료구조의 모든 요소를 추가한다.

    void clear()

    자료구조의 모든 요소를 삭제한다.

    boolean contains(Object e)

    자료구조에 지정된 객체가 존재하는지 조회한다.

    boolean isEmpty()

    자료구조가 비었는지 조회한다.

    Iterator<E> iterator()

    자료구조의 각 요소를 반복해서 추출해주는 반복자객체를 반환한다.

    boolean remove(Object e)

    자료구조에서 지정된 객체를 삭제한다.

    int size()

    자료구조에 저장된 요소의 갯수를 반환한다.

    Object[] toArray()

    자료구조에 저장된 요소를 배열로 반환한다.

     

    Collection의 주요 하위 인터페이스

    Set<E>

    중복을 허용하지 않는다.(동일한 객체를 2개 저장할 수 없다./ 동일한 값을 갖고 있어도 주소값이 다르기때문에 서로 다른 객체로 인식한다.) (동등성비교를 위해 hash코드와 equals메소드를 재정의해서 동등성비교를 한다.)

    주요 구현 클래스

    • HashSet<E> : 가장 많이 사용하는 Set구현 클래스 (해시코드 값이 같으면 저장 안한다.)
    • TreeSet<E> : 저장되는 요소가 오름차순으로 정렬되어서 저장되는 클래스 (TreeSet에 저장되는 것들은 comparable인터페이스를 구현한 것만 저장된다.)

     

    List<E>

    순서가 유지된다.(저장된 순서대로 다시 꺼낼 수 있다.)

    요소가 저장될 때 마다 index(순번)이 자동으로 부여된다. (인덱스로 관리되기 때문에 0번째, 1번째꺼 따로 꺼낼 수 있다, 

    Set이나 List 둘 다 향상된 for문으로 데이터를 꺼내는 건 가능하다.)

    특정위치에 요소 저장하기, 특정위치의 요소 삭제하기, 특정위치의 요소 꺼내기

    List<E>가 지원하는 추가 메소드 (컬렉션 인터페이스의 메소드 외)

    void add(int index, E e)

    지정된 위치에 요소를 저장한다.

    E get(int index)

    지정된 위치의 요소를 꺼낸다

    E remove(int index)

    지정된 위치의 요소를 삭제한다.

    E set(int index, E e)

    지정된 위치의 요소를 새 요소로 교체한다.

    주요 구현 클래스

    ArrayList<E> : 가장 많이 사용하는 List구현 클래스(전체 자료구조 클래스 중에서 가장 많이 사용) (멀티스레드 환경에 unsafe하다.) 가변길이 배열(내부적으로 배열을 사용해서 값을 담고 있다.) 순서대로 저장하고 순서대로 꺼낼 수 있다. 

    LinkedList<E> : 더블링크로 List를 구현한 클래스(요소의 추가/삭제 성능이 우수하다.) 중간에 저장하거나 중간에 삭제하는 게 빈번할 때 쓰임.  

    Vector<E> : ArrayList와 유사한 List구현 클래스(멀티스레드 환경에 안전하다. 스트링버퍼처럼 synchronized가 붙어있다.) 가변길이 배열(내부적으로 배열을 사용해서 값을 담고 있다.) 순서대로 저장하고 순서대로 꺼낼 수 있다.

    Stack<E> : LIFO(Last-In-First-Out)으로 구현된 List구현 클래스

     

    스택은 벡터를 상속받아서 만듦

    addElement, elementAt, firstElement, lastElement, removeElement 등의 메소드들이 있다.

     

    벡터를 만들 때는 컬렉션이라는 게 없었다.

    벡터에는 원래부터 있던 메소드랑 컬렉션으로부터 상속받은 메소드들이 추가된 것이다.

    그래서 벡터에는 메소드들이 많다.

    그래서 벡터에는 add2개가 있다.

     

     

     

     

    [ 출처 ]

    자바의 정석 기초편 - 남궁성, 

    국비 강의

    댓글

Designed by Tistory.