카테고리 없음

3월 30일 목요일 TIL 회고록

tft4rollz 2023. 3. 30. 22:47

List, Set, Map, HashMap의 차이점에 대해 알아보기

 

차이점을 알아보기 전에 Collection(컬렉션)에 대해 알아보자.

 

Collection

  • Java에서 Collection이란 데이터의 집합, 그룹을 의미한다.
  • JCF(Java Collection Framework)는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다.

Java 컬렉션 프레임워크의 상속 구조

Collection 프레임워크는 List,Set,Queue로 크게 3가지 상위 인터페이스로 분류할 수 있다.

Map의 경우 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다.

 

Collection 중요 인터페이스

  1. List : 순서가 있고, 데이터(값) 중복을 허용함
  2. Set : 순서가 없고, 데이터(값) 중복을 허용하지 않는다.
  3. Map : Key, Value 구조이고, Key는 중복을 허용하지 않고 Value(값)는 중복을 허용한다.

List 

  • 입력 순서를 유지하며, 데이터의 중복을 허용한다.
  • 인덱스를 통해 저장 데이터의 접근이 가능하다.

 

List 인터페이스의 주요 구현체로는 ArrayListLinkedList가 있다.

 

ArrayList

먼저 ArrayList는 기본적으로 배열을 사용한다. 하지만 일반 배열과 차이점이 존재한다.

일반 배열은 처음에 메모리를 할당할 때 크기를 지정 해주어야 하지만, ArrayList는 크기를 지정하지 않고 동적으로 값을 삽입하고 삭제할 수 있다.

 

ArrayList의 조회

ArrayList는 각 데이터의 index를 가지고 있고 무작위 접근이 가능하기 때문에, 해당 index의 데이터를 한번에 가져올 수 있다.

 

ArrayList의 데이터 삽입과 삭제

데이터의 삽입과 삭제 시 ArrayList는 그만큼 위치를 맞춰주어야 한다.

삽입과 삭제가 많다면 ArrayList는 비효율적이다.


LinkedList

LinkedList는 내부적으로 양방향의 연결 리스트로 구성되어 있어 참조하려는 원소에 따라 처음부터 정방향 또는 역순으로 순회가 가능하다. (배열의 단점을 보완하기 위해 LinkedList가 고안되었다.)

 

LinkedList의 조회

LinkedList는 순차적 접근이기 때문에 조회 속도가 느리다.

 

데이터 삽입과 삭제

LinkedList는 데이터를 추가,삭제 시 가리키고 있던 주소값만 변경해주면 되기 때문에 ArrayList에 비해 상당하 효율적이다.

 

사진과 같이 조회 시에는 ArrayList가 우위에 있지만 삽입,삭제 시에는 LinkedList가 뛰어난 성능을 보여준다.

소량의 데이터를 가지고 사용했을 때는 사실 큰 차이가 없지만

정적인 데이터를 활용하면서 조회가 빈번하다면 ArrayList를 사용하는게 좋고

동적으로 추가,삭제 요구사항이 빈번하다면 LinkedList를 사용하는게 좋다.


Set

Set은 List와는 다르게 객체(데이터)를 중복해서 저장할 수 없다. 또한 저장된 객체(데이터)를 인덱스로 관리하지 않기 때문에 저장 순서가 보장되지 않는다. Set 컬렉션을 구현하는 대표적인 클래스들은 HashSet, TreeSet, LinkedHashSet 등이 있다.

 

HashSet

HashSet은 Set 컬렉션을 구현하는 대표적인 클래스이다. 데이터를 중복 저장할 수 없고 순서를 보장하지 않는다. 

 

TreeSet

TreeSet도 HashSet과 같이 중복된 데이터를 저장할 수 없고 입력한 순서대로 값을 저장하지 않는다. 차이점은 TreeSet은 기본적으로

오름차순으로 데이터를 정렬한다.

 

LinkedHashSet

LinkedHashSet도 중복된 데이터를 저장할 수 없다. 차이점은 입력된 순서대로 데이터를 관리한다.

 

정리!

Set은 객체(데이터)를 중복해서 저장할 수 없고, 저장된 객체(데이터)를 인덱스로 관리하지 않기 때문에 저장 순서가 보장되지 않는다!

HashSet은 Set 컬렉션을 구현하는 대표적인 클래스이고 데이터를 중복 저장할 수 없고 순서를 보장하지 않는다.

TreeSet은 HashSet과 기능이 비슷하나 차이점은 입력된 순서대로 데이터를 관리한다.

LinkedHastSet도 중복된 데이터를 저장할 수는 없지만 차이점은 입력된 순서대로 데이터를 관리한다.


Map

  • Key,Value 구조
  • Key는 입력 순서를 유지하지 않으며, 중복을 허용하지 않는다. Value는 중복을 허용한다.
  • 인덱스가 따로 존재하지 않기 때문에 iterator를 사용해서 조회한다.
  • Map 인터페이스의 주요 구현체로는 HashMap, LinkedHashMap, TreeMap이 있다.

HashMap

  • Key에 대한 입력 순서를 보장하지 않으며, 중복 Key를 허용하지 않는다.

LinkedHashMap

  • Key에 대한 입력 순서를 보장하며, 중복 Key를 허용하지 않는다.

TreeMap

  • 레드-블랙 트리(Red-Black Tree)를 기반으로 Key,Value를 저장한다.
  • 기본적으로 입력한 Key 데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며, 중복 Key를 허용하지 않는다.
  • 입력하는 데이터가 사용자 정의 객체인 경우 Comparable을 구현하여, 정렬 기준 설정 가능

정리!

Map은 Key,Value 구조이고, Key는 입력 순서를 유지하지 않으며, 중복을 허용하지 않는다. Value는 중복을 허용한다.

HashMap은 Key에 대한 입력 순서를 보장하지 않으며, 중복 Key를 허용하지 않는다.

LinkedHashMap은 Key에 대한 입력 순서를 보장하며, 중복 Key를 허용하지 않는다.

TreeMap은 기본적으로 입력한 Key 데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며, 중복 Key를 허용하지 않고,

입력하는 데이터가 사용자 정의 객체인경우 Comparable을 구현하여 정렬 기준 설정이 가능하다.


List, Set, Map의 차이점

  • List : 순서가 있으며, 데이터(값) 중복을 허용한다.
  • Set: 순서가 없으며, 데이터(값) 중복을 허용하지 않는다.
  • Map : Key,Value 구조이며, Key는 중복을 허용하지 않고 Value는 중복을 허용한다.

Parameter 와 Argument의 차이점

 

Parameter

  • 함수 혹은 메서드 정의에서 나열되는 변수 명이다.
  • Parameter의 실체는 변수이다.

Argument

  • 함수 혹은 메서드를 호출 할 때, 전달 혹은 입력되는 실제 값이다.
  • Argument의 실체는 값이다.
단어 변역 의미
Parameter 매개변수 함수와 메서드 입력 변수(Variable) 명
Argument 전달인자, 인자 함수와 메서드의 입력 값(Value)

 


출처

https://dev-coco.tistory.com/19

https://wikidocs.net/208

 

03-08 맵 (Map)

사람을 예로 들면 누구든지 이름 = 홍길동, 생일 = 몇 월 며칠 등으로 구분할 수 있다. 자바의 **맵(Map)**은 이러한 대응관계를 쉽게 표현할 수 있게 …

wikidocs.net

https://hahahoho5915.tistory.com/35

 

[간단정리] List, Set, Map 특징 및 차이점(+ 구현체 )

개요 자료구조 List, Set, Map의 각각 특징 및 차이점에 대해 알아보자 요약 List: 순서가 있으며, 데이터(값) 중복 허용 Set: 순서가 없으며, 데이터(값) 중복을 허용하지 않음 Map: Key&Value 구조, Key는 중

hahahoho5915.tistory.com

http://taewan.kim/tip/argument_parameter/