수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

컬렉셔프레임워크의 foreach문에 대한 질문입니다.

다크

2023.04.01

import java.util.TreeSet;import java.util.Iterator;import java.util.Comparator;

class StrLenComparator implements ComparatorString{ public int compare(String str1, String str2) { if(str1.length() str2.length()) { return 1; } else if( str1.length() str2.length()) { return -1; } else return 0; }}
public class IntroComparator {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub
TreeSetString tSet = new TreeSetString(new StrLenComparator()); tSet.add(Orange); tSet.add(Apple); tSet.add(Dog); tSet.add(Individual); IteratorString itr = tSet.iterator(); while(itr.hasNext()) System.out.println(itr.next()); for(String e : tSet) System.out.println(e); }
}
위 while과 foreach문은 같은 기능입니다.
질문 내용:위의while문은 순환자 iterator을 이용하여 treeset 컬랙션 데이터를 불러옵니다. 이 while문의 hasnext()나 next()이 동작하는순서 같은것은 알겠습니다.(iterator부분은 대강 이해가 갑니다.)
하지만 아래의 foreach문의 동작순서나 방법같은게 이해가 되지 않습니다. 단순히 배열일때는 foreach문이 이해가 됬는데이렇게 컬랙션프레임워크에서 사용되니 이해가 잘 안되네요.
Iterator은 기본적으로 오름차순으로 데이터에 접근하기때문에 위 main에서 저장된 문자열은 짧은 순으로 출력됩니다.dogappleorangeindividual이런식으로여
근데 아래 foreach문도 위와 같은 결과를 출력합니다.여기서 완전 이해가 되지 않습니다. 어째서 foreach문도 오름차순으로 출력이 되는거죠?treeSet에서도 기본적으로 오름차순으로 데이터를 저장한다는 말인가요?Comparator인터페이스로 단순히 저장되는 String값의 길고 짧은것 만을 기준으로 세웠지 오름차순, 내림차순 등 딱시 어느 한 방법으로 저장하라는 구문은 정의 되지 않았습니다.
책에서 설명은treeSet에서 오름차순, 내림차순이든 어떤식으로 데이터를 저장하는 것은 중요하지 않다.단지 정렬에 대한 기준이 명확해야 하며, 그 기준이 존재한다면 iterator를 이용하여 기준에 따라 오름차순, 내림차순으로데이터를 참조하면 된다.이렇게 설명되어 있습니다.
위 책 설명에서treeSet에서 오름차순, 내림차순이든 어떤식으로 데이터를 저장하는 것은 중요하지 않다.라는 부분이 있습니다. 이 말인즉 프로그래머는 treeSet에 데이터가 어떤식(오름,내림)으로 저장되는 지 알필요가 없다. 라고 하지만 분명이 어떤식으로든 데이터가 저장이 되긴 한다는 말인거 같습니다.
그렇다면 foreach문에서 출력된 오름차순 결과는 treeSet에서 자체적으로 오름차순으로 저장한 것인가요?아니면 foreach문이 오름차순으로 데이터를 가져온 것인가요?
그리고 for(String e : tSet) 이 부분에서 foreach문이 treeSet에 저장된 String형태의 데이터를 스스로 찾아서참조한 건가요? 여기서 foreach문의 동작방식을 좀 자세히 알고싶습니다.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 더글러스

    Set안에는 Map을 가지고 있습니다. Map이라는 자료구조를 찾아보시면 도움이 될거에요.
    순서는 없습니다.단지 꺼낼때 일정한 규칙으로 꺼냅니다.. 그 규칙이 comparator 이고요

  • 네코

    흐음 그렇다면 저장될때 어떤 기준을 가지고 저장되며, iterator뿐만 아니라 foreach문도 그 기준을 받아들여서 데이터를 참조한다고 볼수 있겠네요. 답변감사합니다.

  • 리카

    foreach와 정렬과의 관계는 없습니다. iterator도 마찬가지고요. 또한 Map과 Set은 배열과 다르게 어떠한 순서를 가지고 저장하기 보단 정렬된 순서로 꺼낼 수 있는 인터페이스를 제공한다고 보는게 맞는것 같습니다.

번호 제 목 글쓴이 날짜
2694921 보더 레이아웃 안에 플로우 레이아웃 넣는방법? 초롱 2025-05-15
2694894 웹 프로그래밍 관련해서 질문합니다. 창의적 2025-05-15
2694868 컨택트 폼 7에서 textarea 높이 조정 영글 2025-05-15
2694818 line-height값이 적용이 안되는데 왜 그런 거예요?. letter-spacing,line-height의 기준?? (2) 풍란 2025-05-14
2694795 이것 어떻게 좀 해결좀;; (3) 개럭시 2025-05-14
2694724 코딩시 폰트 문제; ㅠ 후력 2025-05-13
2694696 텍스트박스 입력에 관한 문제입니다. 딥공감 2025-05-13
2694668 [질문] 페이퍼비전 PointLight 관련 질문 드려요.. 두바다찬솔 2025-05-13
2694611 Flash Lite 2.1에서 BitmapData와 Matrix 지원안하나요? (3) 이플 2025-05-12
2694582 IE & 파이어폭스 (2) 흙이랑 2025-05-12
2694553 무비클립안의 duplicate 발동이 안돼네요; 딥보라 2025-05-12
2694523 자바 애플릿 질문좀 ^^ (6) 동이 2025-05-12
2694494 [질문] JAVA 또는 C++ 로 프로그램 개발시.. 레지스터리 등록 관련 의문점? (3) 우람늘 2025-05-11
2694469 익스6에서 css버그 나오는것 해결방법좀요 !!!! (6) 원술 2025-05-11
2694442 로컬에선 잘 나오는데 운영에 반영하면 이상하게 나와요. (8) 목화 2025-05-11
2694412 [질문] 이미지 로딩후 사이즈 조절할때 (1) 아담 2025-05-11
2694391 설치형 블로그 쓰시는 분들 어떤거 쓰세요?? (7) AngelsTears 2025-05-10
2694362 Microsoft SQL Server에서 서버만드는법 어둠 2025-05-10
2694333 for문으로 돌린 이름의 제어 (4) 레이 2025-05-10
2694308 이미지 css 도와주세요 ㅠㅠ (2) 애기 2025-05-10
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com