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의 경우도 동일하다.