泛型
泛型是在定义类或者接口时指定类型形参,这个形参在声明变量或创建对象时确定。泛型其实是应用在编译时期的技术,用于检测所操作的引用数据的类型,提高了程序的安全性。如果我们需要在类的方法中,接收任意且相同类型的两个参数,利用前边所学的知识,我们只能将参数类型定义为Object。当传入参数时,虽然可以传入任意类型,但是也可以是两个不同类型。显然这样满足不了需求,这时我们便需要用到泛型技术。泛型的定义格式:<参数类型>。
简单地说,泛型的出现将运行时可能出现的异常转化成了编译时的错误,也省去了强制类型转换这一步骤。定义了泛型之后,一个容器只能存储一种类型的元素。
关于比较器和自然排序
比较器来实现TreeSet集合对元素的排序的。首先定义一个类实现Comparator接口,重写compareTo()方法,定义比较方式。此例中,在定义比较方式 时,运用了三目运算,这样可以使得代码更加简洁。通常,将要存入TreeSet集合的对象的类都是定义好的,我们也不能去修改其中的代码,所有以自定义比较器这种方式,使得对象具有比较性,更加的方便、实用。通常,在实际开发中也是常用这种方式。
public interface Comparable<T>
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器
关于集合与数列的操作类
public class Collections
extends Object
此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。
public class Arrays
extends Object
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。