構造体をソートする感じのプログラム(Java)

JAVAをいじったときにできた副産物を晒してみる

要するに配列オブジェクトをソートするプログラムならしいが,ここにたどり着くまで苦労した.
これはC言語でいうところのNameという構造体(Mallocしてどんどんデータを追加していけるデータ構造)を,ソートするプログラム.

import java.util.ArrayList;
import java.util.Arrays;

public class struct_sort {
	static ArrayList list =new ArrayList();
	public static void main (String[] args) {
		list.add(new Name("aaa",7));//Cで言えばMalloc
		list.add(new Name("bbb",2));
		list.add(new Name("ccc",3));
		list.add(new Name("ddd",4));
		list.add(new Name("kkk",9));
	     
	    ((Name) list.get(0)).get();
	    ((Name) list.get(1)).get();
	    ((Name) list.get(2)).get();
	    ((Name) list.get(3)).get();
	    ((Name) list.get(4)).get(); 
	    
	    Object[] oa=list.toArray();//ここで配列に変換
	    Arrays.sort(oa,new DataComparator());//配列をソートする
	    
	    System.out.println();
	    for(int i=0;i<oa.length;i++){
	    	((Name)oa[i]).get();
	    }
	  }
}
class DataComparator implements java.util.Comparator{
	public int compare(Object o1,Object o2){
		return ((Name)o2).size() - ((Name)o1).size();
	}
}
class Name{//Nameという構造体みたいなもの(だからクラスだってw)
	String name;
	int tel;
	public Name(String a,int b){
		name=a;
		tel=b;
	}
	public void get(){
		System.out.println(name + " :: " + tel);
	}
	public int size(){
		return tel;
	}
}

ここで何故最初から配列で作らないのか?と言われれば,リストならば後付でどんどん要素を足していけるからである.
結果はこんな感じ,ってそのままだな.

aaa :: 7
bbb :: 2
ccc :: 3
ddd :: 4
kkk :: 9

kkk :: 9
aaa :: 7
ddd :: 4
ccc :: 3
bbb :: 2