[Java] Collection - Set, Map 써보기
List에 이어 이번엔 Set과 Map이다.
1) Set
Set은 List와는 달리 순서가 보장되지 않고 중복된 값이 저장되지 않는다.
List는 요소들이 각각 index 값을 가지고 순서대로 서있는거라면 Set은 이것저것이 섞여있는 주머니 같은 느낌이랄까.
이 때문에 index 값을 써서 출력하지 못하고 iterator로 출력이 가능하다.
물론 한꺼번에 출력하는건 간단히 된다.
list에서 요소를 넣듯 .add를 통해 다섯가지 요소를 넣어줬다. 그리고 apple은 일부러 두번 넣었다.
출력값은 이렇다. 여기서 두가지를 알 수 있다;
index 값이 없다보니 입력 순서에 관계없이 멋대로 저장되고,
중복된 입력값은 저장되지 않는다.
배열에서 for문으로 출력하듯 하기 위해선 위와 같이 다소 번거로운 코드를 만들어줘야한다.
set에 대한 Iterator를 선언하고, iterator가 다음값이 없을 때까지 값을 출력하는 것.
2) Map
map은 각 key, value로 두가지 값을 저장한다.
이 때 value값은 중복이 가능하지만 key는 불가하다.
마치 패스워드는 무엇이 들어가건 상관없지만 아이디는 중복이 불가능한 것과 같다고 볼 수 있겠다.
실제로 map은 웹사이트의 계정 저장에 쓰인다고한다.
두가지 값이 저장되기 때문에 선언시에도
HashMap<String, Integer> 와 같이 <>내에 두가지 변수타입을 넣어줘야한다.
map을 출력하기 위해선 iterator도 쓸 수 없어서 set으로 임시 변경을 하여 출력해야한다.
라인31에서 볼 수 있듯 키셋을 넣어주면 된다.
key 값과 value 값을 각각 출력해낼 수 있는데, value 값은 map.get(key)를 통해 해당 key에 매칭되는 value 값을 호출하는 식이다.