Java 泛型

Java 泛型

from the book 'Thinking in java 4th'.

容器类

Java容器类的用途是保存对象,并将其划分为两个不同的概念:

1,collection。一个独立元素的序列。   
2,Map。一组成对的键值对对象,允许你使用键来查找值。   

如下图所示为Java的容器简图(这里只包含了在一般情况下会碰到的接口和类),基本类型包括Map,List,Set和Queue。


Java提供了大量持有对象的方法:

1,数组将数字和对象联系起来。它保存明确的对象,查询对象时,不需要对结果做类型转换。
数组一旦生成,其容量不能改变。   

2,Collection保存单一的元素,而Map保存相关联的键值对。Collection和Map都可以自动调整尺寸。

3,像数组一样,List也建立数字索引与对象的关联,因此数组和List都是排好序的容器。

4,如果要进行大量的随机访问,就使用ArrayList,如果要经常从表中间插入和删除元素,就使
用LinkedList.   

5,各种Queue以及栈的行为,有LinkedList提供。   

6,Map是一种将对象与对象相关联的涉及。HashMap设计用来快速访问,而TreeMap保持键始终处
于排序状态。LinkedHashMap保持元素插入的顺序,但是也通过散列提供了快速访问能力。   

7,Set不接受重复元素。HashSet提供了最快速的查询速度,而TreeSet保持元素处于排序状态。
LinkedHashSet以插入顺序保持元素。   

8,新程序不应该使用Vector,HashTable和Stack。

泛型转型

class Fruit {}

class Apple extends Fruit {}

class Orange extends Fruit {}

A,数组,支持向上转型
Fruit[] fruit = new Fruit[10];

fruit[0] = new Fruit();
fruit[1] = new Apple();
fruit[2] = new Orange();

B,列表,不支持
//List<Fruit> fls = ol;  //Error
//List<Fruit> fls = new ArrayList<Orange>(); //Error

C,通配符
List<? extends Fruit> fln = new ArrayList<Orange>(); // ok
List<? extends Fruit> fl = ol;    //ok

collection方法

如下是collection中包含的方法,可以用在List和Set中,

boolean add(T)          增加参数为T的参数
boolean addAll(collection<? extends T>)  增加T泛型的参数
void clear()            清除
Boolean containsAll(collection<?>)   如果容器持有此参数的所有元素,返回真
boolean isEmpty()       为空则返回真
Iterator<T> iterator    返回一个Iterator<T>的迭代器
boolean remove(Object)  移除实例
boolean removeAll(collection<?>)    移除参数的所有元素
Boolean retainAll(collection<?>)    保存参数有的元素
int size()              返回容器中的数目
Object[] toArray()      返回一个数组
<T> T[] toArray(T[] a)  返回一个数组,该数组包含容器中的所有元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值