自定义服装类,在GenericGroup中存放一批服装,并按服装的价格排序
提示:在GenericGroup中增加排序的方法:public void sort(Comparator<? super T> c),
调用Arrays中的public static <T> void sort(T[] a,
                            Comparator<? super T> c) 方法对其中的数组进行排序。

解决方案 »

  1.   


    import java.util.Arrays;
    import java.util.Comparator;public class GenericGroup { FuZhuang[] fzList; public void sort(Comparator<? super FuZhuang> c) {
    Arrays.sort(fzList, c);
    } public static void main(String[] args) {
    new GenericGroup().sort(new FZComparator());
    }}class FuZhuang {
    int size; public FuZhuang(int size) {
    super();
    this.size = size;
    }
    }class FZComparator implements Comparator<FuZhuang> { @Override
    public int compare(FuZhuang o1, FuZhuang o2) {
    return o1.size - o2.size;
    }}
      

  2.   

    不知道你要找的是不是这个import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Collections;import java.util.Comparator;import java.util.List;/** *  * @author XXX * @E-mail [email protected] * @创建时间 2011-7-20 * @param <E> */public class SortList<E> {    /**     * 根据对象的相关属性对对象List进行排序     * @param list 需要排序的list     * @param method 排序的属性     * @param sort 排序的方式,desc/asc     * 例如:sortList.Sort(adt, "getVal", "desc");     */    @SuppressWarnings({ "unchecked", "rawtypes" })    public  void Sort(List<E> list, final String method, final String sort){          Collections.sort(list, new Comparator() {                         public int compare(Object a, Object b) {                  int ret = 0;                  try{                      Method m1 = ((E)a).getClass().getMethod(method, null);                      Method m2 = ((E)b).getClass().getMethod(method, null);                      if(sort != null && "desc".equals(sort))//倒序                          ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());                       else//正序                          ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());                  }catch(NoSuchMethodException ne){                      System.out.println(ne);                  }catch(IllegalAccessException ie){                      System.out.println(ie);                  }catch(InvocationTargetException it){                      System.out.println(it);                  }                  return ret;              }           });      }    }
      

  3.   

    供参考:import java.util.*;class Clothing
    {
    String  brand = null;
    int price = 0;

    public Clothing(String brand, int price)
    {
    this.brand = brand;
    this.price = price;
    }

    @Override
    public String toString()
    {
    return this.brand+"-"+this.price;
    }
    }class GenericGroup
    {
    public static void main(String[] args) 
    {
    GenericGroup gc = new GenericGroup();

    gc.sort(new Comparator<Clothing>(){
    @Override
    public int compare(Clothing c1, Clothing c2)
    {
    if(c1.price>c2.price)
    {
    return 1;
    }
    else if(c1.price<c2.price)
    {
    return -1;
    }
    return 0;
    }
    });
    }

    public void sort(Comparator<? super Clothing> c)
    {
    Clothing [] clothing = new Clothing[]{new Clothing("361",500),new Clothing("addi",2500),new Clothing("john",1500)};
    Arrays.sort(clothing,c);

    for(Clothing clo: clothing)
    {
    System.out.println(clo);
    }
    }}测试结果:361-500
    john-1500
    addi-2500