一、在java collections freamwork中,ArrayList是最常用的,但还是会有特殊情况,下面列出几个较为重要的:
1.TreeSet
以有序状态保持并可以防止重复。
2.HashMap
可用成对的name/value来保存取出。
3.LinkedList
针对经常插入和删除中间元素所设计的高效率集合。
4.HashSet
防止重复的集合,可快速找寻相符的元素。
5.LinkedHashMap
类似于HashMap,但可记住元素插入顺序,也可以设定为依照上次元素存取的先后来排序。
二、泛型
在没有泛型出现之前,各种对象以引用的形式加入到ArrayList中,出来时会是Object类型的引用。
泛型出现以后,ArrayList变为ArrayList,仅有Fish对象能以引用形式加入到ArrayList中,出来的还是Fish对象的引用。
如图,加上泛型之后,你只能将Fish对象的引用加入到ArrayList,不能把非Fish对象的引用也放进去,因此取出来时也只会是Fish引用。
泛型好处:运用泛型我们可以创建类型安全更好的集合,让问题尽可能在编译期就能抓到,而不会等到执行期才冒出来。
有一句开玩笑又极具风趣的话来形容:如果没有泛型,编译器会很 愉快地接受你把绵羊对象送入到一个老虎的集合。哈哈^_^。。。
三、运用泛型的方法
泛型的类代表类的声明用到类型参数。
泛型的方法代表方法的声明特征用到类型参数。
1.使用定义在类声明的类型参数
public class ArrayList<E> extends AbstractList<E>...{
public boolean add(E o)
...
2.使用未定义在类声明的类型参数
public <T extends Animal> void takeThing(ArrayList<T> list)