20240701_컬렉션 자료구조

Korangii·2024년 7월 1일
0

Java

목록 보기
15/24
post-thumbnail

상속

  • expands : 부모의 메소드 오버라이딩 필요없음-직접 사용 가능, 다중상속 불가능, abstract 클래스 상속
  • implements : 부모의 메소드 오버라이딩(재정의) 필수, 다중상속 가능, interface 상속

expands는 클래스를 확장하는 것이고 implements는 인터페이스를 구현하는 것이다.


List

  • 순서를 유지하고 저장
  • 중복 저장 가능
  • 객체 추가
    • boolean add(E e)
  • 객체 검색
    • E get(int index)
    • int size()
  • 빈번한 객체 삭제와 삽입이 일어나는 곳에선 바람직하지 않음
  • 중복 저장 가능 / null 저장 가능
  • 인덱스를 통한 검색 속도가 빠르다.
  • 내부 배열에 객체가 저장되고 제한 없이 객체를 추가할 수 있음
  • O(n) : 삽입과 삭제의 시간복잡도, 최악의 시간을 나타내는 시나리오
  • O(1) : 편집의 시간복잡도

⭐ArrayList

  • 검색이 빠름
  • 특정 인덱스의 객체 가져오기
  • 객체 순회하기
  • ⭐⭐⭐for문 사용하기
  • O(N)
for(int i = 0; i<list.size(); i++) {
  Board b = list.get(i)
  System.out.println(b.getSubject() + "\t" + b.getContent() +
      "\t" + b.getWriter());
      }
      System.out.prinln();
      

LinkedList

  • 인접객체를 체인처럼 연결해서 관리, 객체 삭제와 삽입이 빈번한 곳에서 ArrayList보다 유리
  • O(1)
  • 검색 성능은 낮음(ArrayList는 배열 인덱스로 검색이 가능하기 때문에, 상대적으로 검색 성능이 낮다.)

set

  • 저장 순서가 유지되지 않음
  • 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있음
  • hashCode, equals()

HashSet

  • 동등 객체를 중복 저장하지 않음
  • 다른 객체라도 hashCode() 메소드의 리턴값이 같고, eqauls() 메소드가 true를 리턴하면 동일한 객체라고 판단하고 중복 저장하지 않음
  • iterator() 메소드 : 반복자를 얻어 Set 컬렉션의 객체를 하나씩 가져옴

Map

  • v-put(K key, V value) : 주어진 키와 값을 추가, 기존 키가 존재하면 삭제하고 값을 리턴
  • 문자열을 빠르게 찾고자 할 때 주로 사용한다.

Hashtable

  • 비권장
  • 동기화된 메소드로 구성되어 있어 멀티 스레드가 동시에 Hashtable의 메소드들을 실행 불가
  • 멀티 스레드 환경에서도 안전하게 객체를 추가, 삭제할 수 있다.
  • js의 객체와 동일하다. 키와 값으로 이루어져 있기 때문에.
  • 검색 : O(1)

Properties

  • 키와 값을 String 타입으로 제한한 컬렉션
  • 주로 확장자가 .proplerties인 프로퍼티 파일을 읽을 때 사용
  • Map<String, String>

⭐정렬

  • 배열 정렬
  • Array.sort()
  • Collection 정렬
profile
https://honeypeach.tistory.com/ 로 이전했습니다.

0개의 댓글