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