컬쥐네 다락방

Java - List, Set, Map 의 차이점 본문

웹 개발/Java,Spring

Java - List, Set, Map 의 차이점

코딩하는 갱얼쥐 2021. 6. 3. 15:12

배경

모의 면접을 볼 수 있는 기회가 있었는데 Java 관련 질문을 다양하게 해주셔서 내가 어떤 부분을 공부해야 하는지 알 수있어 좋았다. 그 중 가장 먼저 이 세 가지의 차이점에 대해 물어보셨다. 

 

자바에서 쓰이는 Collection Framework는 크게 List, Set, Map으로 나눌 수 있다.

각각의 차이점을 알고 사용해보자.

 

Collection Framwork

1. List : 저장공간이 필요에 의해 자동으로 늘어난다 ( 순서가 있는 저장공간 )

- 특징 : 순서가 있고, 중복을 허용(배열과 유사), equals()를 이용한 데이터 검색

- 장점 : 가변적인 배열(배열이 자동으로 늘어남)

- 단점 : 원하는 데이터가 뒤쪽에 위치하는 경우 속도의 문제 

 

List 구조는 크게 Arraylist, Vector, LinkedList로 분류할 수 있는데

 

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

- 상당히 빠르고 크기를 맘대로 조절할 수 있는 배열

- 단방향 포인터 구조로 자료에 대한 순차적인 접근에 강점

 

2) Vector : Arraylist와 동일하게 사용이 가능하다

- ArrayList의 구형버전이며, 모든 메소드가 동기화 되어있다

- 잘 쓰이진 않는다

Arraylist와 Vector의 차이점은 한 데이터에 동시접속이 발생했을 때, 처리가 가능한 기능이 있나 없나의 차이점

동시 접속을 고려하여 만들어진 리스트가 Vector이다

Arraylist는 동시접속을 고려안했지만 가볍다는 장점이 있다.

 

3) Linkedlist 

- 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 빠른 성능을 보장한다

- 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰인다

- Iterator를 사용한다 

▶ Iterator 추출 전용 인터페이스

- 데이터를 추출하기 위한 데이터 임시 저장공간

- 주로 순서가 없는 자료구조의 값들을 추출할 때 사용

- 보통 hasNext와 next 메소드를 이용한 while문으로 값을 추출한다.

 

사용하는 이유는 linked 특성상 항상 처음부터 같은 경로를 반복적으로 지나면서 데이터의 위치를 검색해야하기 때문에 마지막으로 접근한 데이터를

기준으로 그 다음 데이터를 알아내는 것이 더 쉽다

 

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

중복되지 않는 숫자(데이터)를 구할 때 사용하면 유용하다.

- 특징 : 순서가 없고, 중복을 허용하지 않는다

- 장점 : 빠른 속도

- 단점 : 단순 집합의 개념으로 정렬하려면 별도의 처리가 필요하다

 

▶ hashSet의 key값은 hashcode 비교에 의해 중복여부가 확인된다.

hashCode()를 가지고 비교하고 ==로 비교해서 true를 리턴하거나 equals()로 비교해서 true를 리턴하는지 체크

element를 덮어 쓸 것인지 결정하면 된다.

 

Hashset은 Iterator를 사용한다

왜냐하면, set은 순서가 없기 때문에 데이터에 순서를 정해 추출해야한다.

 

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

- 특징 : Key(키)랑 Value(값)으로 나눠서 데이터 관리, 순서는 없으며, 키에 대한 중복은 없음

- 장점 : 빠른 속도

- 단점 : Key의 검색 속도가 검색 속도를 좌우

'웹 개발 > Java,Spring' 카테고리의 다른 글

RESTful API 란?  (0) 2021.06.29
Spring MVC 란?  (0) 2021.06.14
컴파일 에러 VS 런타임 에러  (0) 2021.06.04
객체 지향 프로그래밍(OOP)이란?  (0) 2021.06.03
java - 제네릭 / 컬렉션  (0) 2021.06.02
Comments