JuJu(INTJ) 2022. 3. 10. 11:55

집합(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으로 정렬시켜준다.

잘 출력된 것을 볼 수 있다.

 

 

 

반응형