게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바 TreeMap Comparator
게시물ID : programmer_13749짧은주소 복사하기
작성자 : 풀런다린다
추천 : 0
조회수 : 499회
댓글수 : 1개
등록시간 : 2015/10/09 01:09:28
Comparator를 이용해서 TreeMap 정렬 기준을 바꾸고 있는데

정렬기준은 바뀌는데 중복을 막는 기능이 사라졌어요...

작성은 붙여넣은 것 처럼 했는데

Descending Class에서 어떻게 하면 중복을 방지할 수 있을지 모르겠어요

책에서는 Collections.sort를 사용해서 했다고 하는데
꼭 Collection.sort를 사용해야만 정렬할 수 있는건가요

class Descending에서 해결할 수 있는 방법은 없는지 궁금합니다.

=======================================================
import java.util.*;

class Question1

{ static TreeMap tree = new TreeMap();
 
  public static void main(String[] args)

{ Scanner s = new Scanner(System.in);
 String data = s.nextLine();

 PrintReverse(data);
}

  static void Check(String data, TreeMap tre)

{ char[] seperate = new char[data.length()];
 for(int i = 0; i<data.length(); i++)
{ seperate[i] = data.charAt(i); }

 for(int i = 0; i<data.length(); i++)
 
{ if(data.charAt(i)<65 || (data.charAt(i)>91 && data.charAt(i)<97) || data.charAt(i)>123)
{ System.out.println("알파벳만 써 주시기 바랍니다."); 
 break;
}
}

 for(int i = 65; i<128; i++)
{ int count = 0;
 
 for(int j = 0; j<seperate.length; j++)
{ if(seperate[j]==(char)i)
{ count++;
 tre.put(seperate[j], count);
}
 
}

}

  static void Print(String data, TreeMap tre2)

{ Check(data, tre2);
 Set set = tre2.entrySet();
 Iterator it = set.iterator();

 while(it.hasNext())
{ Map.Entry e = (Map.Entry)it.next();
 
 Integer value = 0;
 Object obj = e.getValue();
 if(obj instanceof Integer)
  { value = (Integer)obj;
}

 System.out.print(e.getKey()+" : ");
 for(int i = value; i>0; i--)
{ System.out.print("#");
}
 System.out.println(" "+value);

}

  static void PrintReverse(String data)

{ TreeMap rtree = new TreeMap(new Descending());
 System.out.println("역방향");
 Print(data, rtree);
}

}

class Descending implements Comparator
{ public int compare(Object o1, Object o2)
{ if(o1 instanceof Map.Entry && o2 instanceof Map.Entry)
{ Map.Entry c1 = (Map.Entry)o1;
 Map.Entry c2 = (Map.Entry)o2;
 
 int v1 = ((Integer)e1.getValue()).intValue();
 int v2 = ((Integer)e2.getValue()).intValue();
 
 return v2-v1;
}
 return -1;
}






전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호