Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 자바
- 패스트캠퍼스
- 프로그래머스
- java11
- 수정렬하기3
- java
- SQL
- 파이썬
- 스프링부트시작
- 패캠
- 백준
- springboot
- 코딩교육
- 자바스크립트
- 코딩테스트
- 10989
- intelij
- 코테
- 3273
- 소금폭탄
- DockerDesktop
- 노션
- sql문법
- 알고리즘
- BOJ
- 배열
- 개발포트폴리오
- 코딩자격증
- fastcampus
- 패스트캠퍼스후기
Archives
- Today
- Total
기록용 블로그
[자료구조] 1. List, Set, Map 본문


1. List

1) 특징
- 순서가 있다
- 중복을 허용한다
- 인덱스를 통한 원소 접근
- 가변적인 크기
2) 종류
| 리스트 | 특징 |
| ArrayList | - 배열 + 리스트 : 객체 내부에 배열에 데이터 저장 - 단방향 포인터 구조로 자료에 대한 순차적인 접근에 강점 - 빠르고, 크기를 맘대로 조절할 수 있다. |
| LinkedList | - 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 때 성능 보장 - 스택, 큐 등을 만들기 위한 용도로 사용한다. - Iterator를 사용한다. (Iterator : 순서가 없는 자료구조의 값을 추출할 때 사용. hasNext 와 next 메소드 이용) |
| Vector | - ArrayList의 구버전이며, 잘 쓰이진 않는다. |
3) 배열과의 차이점
- 인덱스의 역할 : 배열은 인덱스가 유일무이한 식별자이지만, 리스트에서는 단지 몇 번째 데이터인지 정도를 판별하는 용도이다.
데이터가 삭제되면 배열은 해당 인덱스의 데이터가 빈 상태로 유지되지만, 리스트는 해당 인덱스에 새로운 요소가 저장될 수 있다.
- 가변성 여부 : 배열은 메모리가 할당되어 있지만(크기가 할당되어 있지만), 리스트는 가변적이다.
- 데이터 조회/삽입/삭제 : 데이터 조회 속도는 배열 > 리스트, 데이터 삽입/삭제 속도는 배열 < 리스트
4) ArrayList 사용 예시
ArrayList alist = new ArrayList();
//add
alist.add("jane");
alist.add("nova");
alist.add("sophia");
//위치 지정 add
alist.add(0, "lisa"); // 첫번째 위치에 lisa 삽입.
//get
System.out.println(alist.get(2)); //nova 출력
//size
System.out.println(alist.size()); //4 출력
//contains
//boolean 리턴
System.out.println(alist.contains("jane")); //true 출력
//remove
//값 혹은 인덱스로 삭제 가능
System.out.println(alist.remove("nova")); //true 출력
System.out.println(alist.remove("2")); //nova 출력
2. Map

1) 특징
- key, value의 쌍으로 이루어진 데이터 집합
- key는 중복을 허용하지 않는다
- value는 중복을 허용한다
- 순서를 보장하지 않는다
2) 종류
| 맵 | 특징 |
| HashMap | - key 중복 x - 순서보장 x - key, value 값으로 null 허용 - 검색에 뛰어난 성능 |
| LinkedHashMap | - 입력 순서 보장 |
| HashTable | - 동기화 보장 - key, value 값으로 null 허용 x |
| TreeMap | - key값을 기준으로 오름차순 정렬 - 정렬을 해야하기 때문에 시간이 오래 걸림 |
3) HashMap 사용 예제
HashMap<String, String> map = new HashMap<>();
//put
map.put("이름", "제인");
map.put("취미", "피아노");
//get
System.out.println(map.get("이름")); //제인 출력
//containsKey
//키가 있으면 true, 없으면 false
System.out.println(map.containsKey("취미")); // true 출력
//remove
//삭제 후 해당 value 리턴
System.out.println(map.remove("이름")); // "제인" 출력
//keySet
System.out.println(map.keySet()); // [이름, 취미] 출력
3. Set
1) 특징
- 순서가 없다.(Unordered)
- 중복이 허용되지 않는다
- 배열과 리스트와는 다르게 인덱스가 따로 없으므로 Iterator를 사용한다.
- 중복을 허용하지 않는 집합 자료형의 특징은 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용한다.
2) 종류
| 셋 | 특징 |
| TreeSet | - 오름차순으로 값을 정렬하여 저장 |
| LinkedHashSet | - 입력 순서 보장 |
3) 사용 예시
//set 예시1
HashSet<String> set1 = new HashSet<>(Arrays.asList("H", "e", "l", "l", "o"));
System.out.println(set1); // [e, H, l, o] 출력 --> 중복 허용 x
//set 예시2
HashSet<String> set2 = new HashSet<>();
//add
set2.add("jane");
set2.addAll(Arrays.asList("nova", "sophia"));
//remove
set2.remove("jane");
출처 : https://wikidocs.net/157108
https://cocoon1787.tistory.com/527
https://velog.io/@esun1903/자료구조-List-Map-Set의-특징과-차이점
'개발 > 알고리즘 공부' 카테고리의 다른 글
| [알고리즘] 코딩테스트 유형 (feat. 프로그래머스) (0) | 2023.04.25 |
|---|---|
| [프로그래머스] 등수매기기 (0) | 2023.04.24 |
| 패스트캠퍼스 핵심유형 20개로 한 번에 끝내는 알고리즘 코딩테스트 with Java 강의 1주차 (0) | 2023.04.20 |
| [BOJ3273] 수 정렬하기 (1) | 2023.04.20 |
| [BOJ10989] 수 정렬하기3 (0) | 2023.04.20 |