JAVA - Collection(1) List

이상해씨·2022년 7월 30일
0

웹 풀스택(JAVA)

목록 보기
11/54

✔Collection Framework

  • 자료구조 : 효율적인 접근 및 수정을 가능하게 하는 자료의 조직, 관리, 저장을 의미.
    • 데이터 값의 모임.
    • 데이터 간의 관계.
    • 데이터에 적용할 수 있는 함수나 명령.
    • (ex) 배열
  • 배열 : 가장 기본적인 자료구조
    • Homogeneous Collection : 동일한 데이터 타입만 관리 가능.
    • Polymorphism(다형성) : Object를 이용해 모든 객체 참조 가능.
      • 담을 때는 편하지만 객체 타입 확인후 사용해야하는 불편함.
      • Generic을 이용한 타입 한정으로 일부 해소.(컴파일시 타입을 제한하여 형변환의 번거로움 제거.)
  • Collection Framework
    • java.util 패키지 : 다수의 데이터를 처리하는 자료 구조 제공.(DB처럼 CRUD 기능 중요.)
    • 3대 주요 인터페이스 : List, Set, Map
      - List : 순서가 있는 데이터의 집합. 중복 허용(순서로 구분 가능). (ArrayList, LinkedList, ..)
      - Set : 순서를 유지하지 않는 데이터 집합. 중복 불가(순서로 구분 불가능). (HashSet, TreeSet, ...)
      - Map : key와 value의 쌍으로 데이터를 관리하는 집합. 순서 없음. key의 중복 불가. value 중복 허용. (HashMap, TreeMap, ...)

  • Collection Interfacce : List, Set, Map은 아래 메서드에 각각에 맞는 추가적인 메서드가 있음.
분류Collection
추가add(E e)
addAll(Collection < ? extends E > c)
조회contains(Object o)
containsAll(Collection< ? > c)
equals()
isEmpty()
iterator()
size()
삭제clear()
removeAll(Collection < ? > c
retainAll(Collection < ? > c
수정
기타toArray()

✔List

  • 특징
    • 순서가 있는 데이터 집합
    • 순서가 있으므로 데이터 중복 허용.
    • 내부적으로 Object[] 사용 => 크기 자동 조절.(Arrays.copyOf를 활용해 칸이 부족하면 늘리는 형식.)
  • 주요 메서드
분류List
추가add(int index, E element)
addAll(int index, Collection < ? extends E > c)
조회get(int index)
indexOf(Object o)
lastIndexOf(Object o)
listIterator()
삭제remove(int index)
수정set(int index, E element
기타subList(int fromIndex, int toIndex)
  • 배열과 ArrayList
    • 배열의 장점 : 간단하며 사용이 쉬움. 접근 속도가 빠름.(Index를 활용한 접근)
    • 배열의 단점 : 크기를 변경할 수 없어 추가 데이터를 위해 새로운 배열에 복사하는 방식 사용. 비순차적 데이터의 추가, 삭제에 많은 시간이 걸림.
    • 배열을 사용하는 ArrayList도 동일한 장, 단점 계승.(단, 크기는 내부 메서드를 통해 자동 조절.)
  • LinkedList
    • 각 요소를 Node로 정의. Node(다음 요소 참조값, 데이터)로 구성.
      • 연속적으로 구성될 필요가 없음.
    • 다음 요소 참조값을 변경하여 데이터의 추가, 삭제 구현.
  • ArrayList와 LinkedList
    • 특정 클래스가 좋고 나쁘다기 보다 용도에 적합하게 사용하는 것이 중요.
    • 소량의 데이터에서는 큰 차이 없음
    • 정적이 데이터 활용, 단순한 데이터 조회 : ArrayList
    • 동적인 데이터 추가, 삭제가 빈번한 경우 : LinkedList
구분순차 추가/수정/삭제 100만건비순차 추가/수정/삭제 10만건조회 10만건
ArrayList빠름느림빠름
LinkedList느림빠름느림
  • 자료 삭제시 주의사항
    • index로 삭제시 구조가 변경되며 결과가 달라질 수 있으므로 주의.
      • 인덱스 끝에서부터 확인하는 형식으로 어느정도 예방가능.
    • forEach 문장에서는 Collection 크기 불변이여야 함.
profile
후라이드 치킨

0개의 댓글