슬기로운슬기

오늘 자바 문법 2주차 강의를 들으면서 컬렉션을 배웠다... 

collection(참조형 자료구조) 에서 List, Set, Queue, Map을 배웠는데 2주차 숙제를 하는데 Set에서 막혀버렸다..

 

 

나는 자바의 자료구조 중 Set을 이용하여 배열을 만들었다. 

Set에서 LinkedhashSet이라는걸 썼다. 보통, HashSet을 쓰는데 순서보장이 필요할 때 LinkedHashSet을 주로 사용한다고 하더라..

나는 순서보장이 필요한 코드를 짜고 있었음 !

 

- LinkedhashSet: 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근 가능 

-> 2주차 숙제에서 데이터가 배열에 차곡차곡 쌓여야 했기 때문에 

System.out.println(num + "." + strget.get(i));

 set은 생성자가 없는 껍데기라서 바로 생성할수가 없다고 한다. 그 중에서 생성자가 존재하는 클래스인 HashSet를 사용하면 Set을 생성해서 받을 수 있다. 그러나 나는 LinkedHashSet을 사용해서 get 메서드는 제공하지 않는다 ! 

 

그래서 구글링을 통해 Iterator을 찾았다 ! 

LinkedHashSet은 Iterator를 통해 순회할 수 있다. Itreator를 사용해서 순회하면서 특정 위치에 도달할때 까지 요소를 진행시키고 해당 요소를 가지고 올 수 있다

 

이렇게 Iterator을 사용해서 코드를 마무리 했다..!

            case "Set":
                Set<String> strSet = new LinkedHashSet<String>();
                while (true) {
                    String text = sc.next();

                    if (Objects.equals(text, "끝")) {
                        break;
                    }
                    strSet.add(text);
                }
                System.out.println("[" + collection +" 으로 저장된 " + title + "]");
                Iterator iterator = strSet.iterator();
                for(int i=0; i<strSet.size(); i++) {
                    int num = i + 1;
                    System.out.println(num + "." + iterator.next());
                }
반응형
profile

슬기로운슬기

@스를기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!