使用泛型技术排序数组JDK5.0



java5.0中引进泛型的新概念。当使用集合时这将是十分有用的。程序员避免因在某些集合内插入错误的类型的而产生的错误。还可以避免众多的类型的转换。为了能避免因这种类型的错误,集合必须正确的设置。这一切只是增加了简单的语法:

 

List<MyClass> aList = new ArrayList<MyClass>();

现在编码变的优美和简单:

MyClass a = aList.get(i);

但是泛型概念不只限于此。还有泛型方法。我第一次使用泛型方法排序数组就碰了壁。Sort方法定义如下:

public static <T> void sort(T[] a, Comparator<? super T> c);

我不能理解<? super T>的含义,关于通配符在下列文章中有介绍:http://java.sun.com/developer/technicalArticles/J2SE/generics/

但我使用新定义的Array.sort()方法,编译器却警告:Unchecked invocation sort(Object[], Comparator) of the generic method sort(T[], Comparator<? super T>) of type Arrays.

你可以在方法上面使用@SuppressWarnings("unchecked")忽略警告。如果你使用5.0更应该这样做代码如下:

 

public void myMethod() {
    MyClass[] arr = getAnArrayOfMyClass();
   
    Comparator c = new MyClassComparator();
    Arrays.sort(arr, c);
}

 private class MyClassComparator implements Comparator {
 
     public int compare(Object o1, Object o2) {
            MyClass a1 = (MyClass)o1;
            MyClass a2 = (MyClass)o2;
            return a1.getString().compareTo(a2.getString());
    }
}

同样的代码在JDK5.0中变成下面这样:

public void myMethod() {
    MyClass[] arr = getAnArrayOfMyClass();
   
    MyClassComparator c = new MyClassComparator();
    Arrays.sort(arr, c);
}

private class MyClassComparator implements Comparator<MyClass> {
         public int compare(MyClass o1, MyClass o2) {
            return o1.getString().compareTo(o2.getString());
        }
}

使用5.0风格代码变的更加简单。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值