JAVA TreeMap 인덱스 값 가져오기 및 Collections.sort 사용하기

by 조쉬 posted Jul 09, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
import java.io.*;







// Collection.sort를 사용하기 위해서 필요하다.  

class MyComp implements Comparator<result> {
     public int compare(result o1, result o2) {
          if (o1.a > o2.b) return -1;
          else if (o1.a < o2.b) return 1;
          else return 0;
     }
}




class result{
     int a; 
     int b;
}




public class Test_java {
     public static void main(String[] ar) {
          File a = new File("./aaa.txt");
          Scanner sc = null;
          try {
               sc = new Scanner(a);
          }catch(IOException e) {
               System.err.println(e);
               System.out.println("파일 스캔 에러");
               System.exit(1);
            }
  
  ArrayList<String> al = new ArrayList<String>();
  ArrayList<result> a2 = new ArrayList<result>();
  
  while(sc.hasNext()) {
       al.add(sc.nextLine());
   
       result re = new result(); 
       re.a = 1; 
       re.b = 2;
 

       a2.add(re);
   
  }
    
  Collections.sort(al);
  Collections.sort(a2, new MyComp());
  
  
  // TreeMap 입력 및 출력 부분. 
  TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
  
  for(int i = 0; i < al.size(); i++) {
   tm.put(al.get(i), 1); 
  }
  
  // TreeMap index값 가져오기.
  Set cla = tm.keySet();
  String[] strArr = new String[cla.size()];
  strArr = (String[]) cla.toArray(strArr);
  
  for(int i = 0 ; i < strArr.length ; i++){
       System.out.println("TreeMap index = " + strArr[i]);
  }
  
  // 파일 출력부분 입니다.
  PrintWriter pw = null;
  try {
   pw = new PrintWriter(new BufferedWriter(new FileWriter(new File("./bbb.txt"))));
  }catch(IOException e) {
       System.out.println("파일 쓰기 에러");
       System.exit(1);
  }
  
  for(int i = 0; i < al.size(); i++) 
   pw.println(al.get(i));
  
  pw.close();
    }
}


TreeMap의 경우, 자동으로 key 값을 기준으로 정렬이 된다. 그러나, key 값이 아닌 value 값으로 정렬을 하고자 한다면, TreeMap의 값들을 ArrayList에 저장후, Collections.sort를 이용하면 된다. 이것은 HashMap의 경우도 동일하다.