[자료구조] List, Set, Map, HashMap

딩딩당당·2023년 3월 18일
0

1. List : 저장 공간이 필요에 의해 자동으로 늘어난다.

  • 특징 : 순서가 있고, 중복을 허용(배열과 유사함)
  • 장점 : 가변적인 배열
  • 단점 : 원하는 데이터가 뒤쪽에 위치한느 경우 속도의 문제가 발생할 수 있음
  • 방식 : equals()를 이용한 데이터 검색

자바에서 list자료 구조는 크게 vector, arraylist, linkedlist로 나뉜다.

1) Arraylist : 객체 내부에 있는 배열에 데이터를 저장한다.

  • 상당히 빠르고 크기를 마음대로 조절할 수 있음.
  • 단방향 포인터 구조로 자료에 대한 순차적인 접근에 유리

2) Vector : arraylist와 동일하게 사용이 가능함

  • arraylist의 구형버전이며, 모든 메소드가 동기화 되어있다.
  • 잘 쓰이지 않음

3) Linkedlist

  • 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 빠른 성능을 보장한다.
  • 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰인다.
  • lterator를 사용한다.

2. Set : 집합, 순서가 없다. 집합이므로 중복된 데이터가 들어갈 수 없다.

  • 특징 : 순서가 없고, 중복을 허용하지 않는다.
  • 장점 : 빠른 속도
  • 단점 : 단순 집합의 개념으로 정렬하려면 별도의 처리가 필요하다.

*hashSet의 ket값은 hashcode 비교에 의해 중복여부가 확인된다. hashCode()를 가지고 비교하고 ==로 비교해서 true를 리턴하거나 equals()로 비교햇 ㅓtrue를 리턴하는지 체크 element를 덮어 쓸 것이지 결정하면 된다.

3. Map : 키와 데이터를 같이 저장

  • 특징 : Key랑 Value으로 나눠서 데이터 관리, 순서는 없으며, 키에 대한 중복은 허용하지 않는다.
  • 장점 : 빠른 속도
  • 단점 : Key의 검색 속도가 검색 속도를 좌우함

4. HashMap(순서를 보장하지 않는 map, Key와 Value로 null이 허용된다.)

  • index번호 대신 키값으로 값을 찾는 맵형태의 자료구조도 iterator클래스를 이용해서 키값을순서대로 iterator에저장해두면 순서대로 데이터 추출이 가능하다.
profile
자바공부해요흑흑

0개의 댓글