24. 집합과 맵(Set & Map)
집합(Set)이란?
순서가 없고, 중복이 없는 Collection이다.
맵(Map)이란?
키(key)와 값(value)로 이루어져 있으며 키를 통해 값을 가져온다.
키는 중복될 수 없고 유일하지만 값은 중복해서 사용할 수 있는 특성을 가지고 있다.
============================================================================
집합의 특성을 알아보기 위해 코드를 쳐보았다.
현재 fruit라는 집합을 만들고 Orange, Apple, Watermelon, Grape 총 4개의 값이 들어있다.
따라서 사이즈를 출력해보면 4인 것을 확인할 수 있다.
집합은 중복이 없는 컬렉션이다.
따라서 똑같은 값 Orange와 Watermelon을 추가해줬다.
리스트라면 크기가 6이 나와야 정상이지만 집합은 중복이 없기 때문에 Orange, Watermelon이 한번만 들어가서
값은 그대로 4가 출력되게 된다.
마지막으로 같은 코드에 중복이 되지 않은 값 mango를 추가해줬을 때 집합에 추가가 되어 5가 출력되는 것을 확인할 수 있다.
toHashSet 함수
HashSet은 불변성 선언이 없기 때문에 추가 및 삭제 등의 기능을 수행할 수 있습니다.
toSortedSet 함수
TreeSet 컬렉션을 정렬된 상태로 반환합니다.
검색과 정렬이 뛰어나다는 장점이 있지만 HashSet보다 성능이 떨어지고 데이터를 추가 및 삭제하는데 시간이 걸립니다.
정렬이 잘된 것을 볼 수 있습니다.
set은 중복이 안된다고 했고
List는 중복이 가능하다고 했습니다.
setOf에서 중복되는 Orange, Watermelon이 빠진 후에 MutableList로 바꿔줍니다.
변환 이후에 중복되는 값을 넣어주면 잘 출력되는 것을 볼 수 있습니다.
또한 Mutable이기 때문에 추가, 삭제 등이 가능합니다. 따라서 리스트에 아이템을 추가할 수 있습니다.
https://go-coding.tistory.com/30
[자료구조] Hash의 개념 및 설명
코딩테스트 문제를 풀다가 막히는 문제가 있었다. 내가 지금까지 배운 여러가지 자료구조를 생각해보았지만 딱히 올바른게 떠ㅎ오르지 않아서 힌트를 보았다. 힌트를 보니 '이분 탐색, 해시를
go-coding.tistory.com
============================================================================
다음은 Map입니다.
Map은 하나의 고유한 키가 있고 중복이 불가합니다. 하지만 값은 중복이 가능합니다.
MapOf(Immutable - 읽기 전용)을 써보자.
1이라는 키에 월요일, 2라는 키에 화요일, 3이라는 키에 수요일이라는 값을 지정해준다.
키 값이 2인 Tuesday가 출력되는 것을 볼 수 있다.
dayOfTheWeek 맵은 키가 1, 2, 3같은 정수이고 값이 String이였다.
fruitMap 맵은 키가 String형이고 값이 오브젝트이다.
이처럼 맵은 키나 값의 자료형 제한이 없다.
dayOfTheWeek를 Mutable로 변형시켜 수정가능하게 한 후
목요일, 금요일을 각각 4, 5키 값으로 넣어준고 SortedMap으로 정렬시켜준다.
잘 출력된 것을 볼 수 있다.