자바소스 질문이요 (collection)
미련곰팅이
자바를 공부하는 초보자입니다..
공부를 하던 중에 콜렉션 소스가 있어서 실행을 해봤습니다....
클래스는 TreeSet이구요...
근데 실행 순서를 잘 몰라서 올려 봤습니다..
실행 순서 좀 자세히 가르쳐 주세요 부탁 드리겠습니다..
import java.util.*;
class MyComp implements Comparator {
public int compare(Object a, Object b) {
String aStr, bStr;
aStr = (String) a;
bStr = (String) b;
return bStr.compareTo(aStr);
}
}
class CompDemo {
public static void main(String[] args) {//요기부터 제일 처음 메인이 실행되는데.. 여기서부터 설명 좀 부탁 드립니다.
TreeSet ts = new TreeSet(new MyComp());
ts.add(C);
ts.add(A);
ts.add(B);
ts.add(E);
ts.add(F);
ts.add(D);
Iterator i = ts.iterator();
while(i.hasNext()) {
Object element = i.next();
System.out.print(element + );
}
System.out.println();
}
}
-
재마루
만두맨// TreeSet 의 생성자 목록에는 TreeSet(Comparator? super E c) 게 있습니다. 필요하니 넣어달라는거겠죠. 이미 TreeSet의 내부에는 Comparator 인터페이스의 메서드를 이용해서 무언가를 하는 코드가 분명히 들어있으니 MyComp 에서 직접 구현해 주는거죠
-
노랑이
근데 저거 무슨 프로그램인지.. MyComp에 compare는 안쓰는 메소드 아닌가여?
-
풀큰
네 심심하면 거기도 놀러가거든요 ㅎㅎ
-
한빛
답변 주셔서 감사합니다. 하늘이님은 다른 사이트에 있는 질문에도 답글 달아주셨던데...
-
내길
글쎄요 설명이랄것도 없는게 TreeSet 의 인스턴스를 만드는데 생성자에 Comparator를 구현한 클래스인
MyComp 를 인자로 넣어주고 Iterator 를 얻어와서 차례로 출력하고 출력 순서는 Comparator에 정의된
순서네요
실행 순서는 new MyComp() 가 먼저 실행되고 그 다음 TreeSet 의 인스턴스가 만들어지고 그 다음엔 add() 메서드들이 실행되겠죠