一个类,class classa{public int a;public int b;public int c}
一个List中储存许多classa的实例,能不能实现一个函数sort(string x)
实现功能sort("a")则对List按照classa实例中a的大小排序,
sort("b")则按照b的大小排序

解决方案 »

  1.   

    排序可以,但要让classa实现Comparable接口~
      

  2.   

    package person;import java.util.Arrays;public class Test {
    public static void main(String[] args) {
    Classa array[]=new Classa[10];
    array[0]=new Classa("abc");
    array[1]=new Classa("bde");
    array[2]=new Classa("mqq");
    array[3]=new Classa("sef");
    array[4]=new Classa("gtd");
    array[5]=new Classa("dfg");
    array[6]=new Classa("ert");
    array[7]=new Classa("erg");
    array[8]=new Classa("gfg");
    array[9]=new Classa("ert");
    Arrays.sort(array);
    for(int i=0;i<10;i++)
    System.out.println(array[i]+",");

    }


    }
    class Classa implements Comparable<Classa>{
    private String name;

    public Classa(String name){
    this.name=name;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    }

    public String toString(){
    return this.name;
    } public int compareTo(Classa o) {
    // TODO Auto-generated method stub

    return this.name.compareToIgnoreCase(o.getName());
    }
    }
    对字符串排序,应该可以
      

  3.   

    你可以这样想:排序用的是Comparable接口,用代理模式实现这个接口
      

  4.   

    用Comparable接口我大概知道了,但是怎么根据输入的"a"来去Comparable中比较classa.a呢
      

  5.   

    可以利用反射,去反射那个成员import java.lang.reflect.Field;
    try {
        Class classa = Class.forName("Classa");
        Field fieldA = classa.getDeclaredField("a");    
    } catch (Exception e) {
        e.printStackTrace();
    }
      

  6.   

    2种排序方法分别实现Comparator接口
    用这个方法:Collections.sort(List l,Comparator c)