*컬렉션이란? : 자바에서 자료구조를 담당하는 프레임워크

   ->java.util 패키지에 포함되며 인터페이스를 통해 추가, 삭제, 정렬 기능들이 간단히 해결됨

 

* 배열 vs 컬렉션

배열 컬렉션
한 번 크기 정하면 변경 불가 저장 크기 제약 없다
중간 위치 추가 삭제 불편 추가, 삭제, 정렬 용이
한 타입 데이터만 저장 가능 여러 타입 가능

*컬렉션의 주요 인터페이스

  • List : 순서를 유지, 중복 저장 가능
  • Set : 순서가 없고 중복 저장 불가
  • Map : 키와 값의 쌍으로 이루어지며 키는 중복 저장이 안된다.

* List : 순차적 자료구조로 인덱스로 관리됨

   ex) ArrayList, LinkedList, Vector

    <주요 메서드>

  • add : 객체 추가
  • addAll : 컬렉션 타입 객체를 리스트에 추가
  • set : 해당 인덱스의 객체를 바꿈
  • contains : 해당 객체 저장 여부
  • get : 해당 인덱스 객체 리턴
  • isEmpty : 컬렉션이 비어있는지 조사
  • clear : 모든 객체 삭제
  • size : 객체 수 리턴
  • remove : 해당 객체 삭제

*ArrayList :

-초기 용량은 10으로 설정되며 따로 지정 가능

-저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능

-동기화를 제공하지 않음

 

*LinkedList :

-앞뒤 링크를 동해 체인처럼 관리됨

-객체 삽입과 삭제가 빈번하면 ArrayList보다 성능이 좋음

 

*Set : 저장 순서가 유지되지 않고 중복을 허용하지 않음(null도 중복 x)

  ex) HashSet,TreeSet , LinkedHashSet

   <주요 메서드>

  • add
  • addAll
  • contains
  • itereator : 저장된 객체를 한번씩 가져오는 반복자 리턴(List, Set 만 가능)
    • Set은 인덱스가 없으므로 호출시 iterator 사용으로 가능하다
    • 향상된 for문으로도 가능하다
    • Map의 경우 Set/List화 시켜 iterator 사용
  • size
  • clear
  • remove

*HashSet :

->Set에 객체를 저장할 떄 hash함수를 사용하여 처리 속도가 빠름

 

*Map : 키와  값으로 구성되어 

    키: 중복저장 허용하지 않는 Set 방식(중복되면 값을 덮어씌운다)

    값: 중복저장 허용

 ex) HashMap, HashTable, LinkedHashMap, Properties , TreeMap

  <주요 메서드>

  • put : 주어진 키와 값을 추가, 저장이 되면 값을 리턴
  • entrySet : 모든 키와 값의 쌍을 Set에 담아 출력
  • get : 주어진 키의 값을 리턴
  • isEmpty : 비어있는지 여부
  • keySet : 모든 키를 Set 객체에 담아 리턴
  • size
  • values : 모든 값을 컬렉션에 담아 리턴
  • clear
  • remove
  • containsKey : 키 존재 여부
  • containsValue : 값 존재 여부

* Hash 와 hashCode

-> 해쉬 저장 방식은 객체 저장을 해쉬값으로 하고 해쉬값을 통해 진짜 주소로 빠르게 가는 방식

-> 그러므로 equals() 메서드를 오버라이딩 하는 경우

-> 값이 동일할 때 hash 또한 동일해 지도록 재정의 해야 한다.

-> 미정의시 값은 동일하게 판단하는데 주소는 다르게 판단되어 중복이 허용되는 문제가 발생한다.

 

 

+ Recent posts