首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小弟java泛型题目

2012-03-11 
小弟求助java泛型题目自定义服装类,在GenericGroup中存放一批服装,并按服装的价格排序提示:在GenericGroup

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

[解决办法]

Java code
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;    }}
[解决办法]
不知道你要找的是不是这个
Java code
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 monkey_ye@qq.com * @创建时间 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;              }           });      }    }
[解决办法]
供参考:
Java code
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);            }    }} 

热点排行