Java中的容器及泛型
- 容器
- 容器的分类
- Collection
- Map
- 泛型
- 泛型的使用
- 泛型类
- 泛型接口
- 泛型方法
- 通配符
- 上届通配符
- 下届通配符
容器
在Java中,有一个类专门来存放其他类的对象,这个类叫做容器。
将若干性质相同或相近的类对象组合在一起而形成的一个整体。
容器的分类
Java的容器主要分为2个大类,即Collection和Map。
- Collection代表着集合,类似数组,只保存一个数字。
- Map则是映射,保留键值对两个值。
Collection
- List :有序集合,允许重复的元素
- ArrayList:底层用Object数组实现
特点:查询效率高,增删效率低,线程不安全
- LinkedList:底层使用双向循环链表实现
特点是查询效率低,增删效率高,线程不安全,因为线程不同步
- Set:无序集合,不允许重复的元素
- HashSet 是一个没有重复元素的集合,不保证元素的顺序
HashSet 允许有 null 元 素
- LinkedHashSet
- TreeSet
- queue:单向队列
允许在队尾插入元素,在队头删除元素
经常被用来实现消息队列,任务队列等场景
Map
一个映射不能包含重复的键;每个键最多只能映射到一个值。
- HashMap
- LiLinkedHashMap
- TreeMap
- ConcurrentHashMap
- Hashtable
泛型
本质:“参数化类型”。将原来具体的类型参数化
作用:避免了强转的操作,在编译器完成类型转化,也就避免了运行的错误。
泛型的使用
泛型类
- 泛型类声明
- 格式:
class 名称<泛型列表>
如:
class People <E>//People是泛型类的名称,E是其中的泛型
- 泛型类的类体
和普通类一样,由成员变量和方法组成 - 使用泛型类声明对象
和普通类相比,泛型类声明和创建对象时,类名后加了<>,且必须具有具体的类型替换<>中的泛型。
如:
Cone<Circle> coneOne;
coneOne =new Cone<Circle> (new Circle());
泛型接口
把泛型定义在接口
格式:
public interface 接口名<泛型类型> {
}
泛型方法
把泛型定义在方法上
格式:
public <泛型类型> 返回类型 方法名(泛型类型 变量名) {
}判断一个方法是否是泛型方法:
方法返回值前面没有<>标记的类型,那就不是
通配符
如常用的 T E K V ?
上届通配符
用extends关键字声明
下届通配符
用super关键字声明