Java中的容器及泛型

  • 容器
  • 容器的分类
  • Collection
  • Map
  • 泛型
  • 泛型的使用
  • 泛型类
  • 泛型接口
  • 泛型方法
  • 通配符
  • 上届通配符
  • 下届通配符


容器

在Java中,有一个类专门来存放其他类的对象,这个类叫做容器。
将若干性质相同或相近的类对象组合在一起而形成的一个整体。

容器的分类

Java的容器主要分为2个大类,即Collection和Map。

  • Collection代表着集合,类似数组,只保存一个数字。
  • Map则是映射,保留键值对两个值。

Collection

  • List :有序集合,允许重复的元素
  1. ArrayList:底层用Object数组实现

特点:查询效率高,增删效率低,线程不安全

  1. LinkedList:底层使用双向循环链表实现

特点是查询效率低,增删效率高,线程不安全,因为线程不同步

  • Set:无序集合,不允许重复的元素
  1. HashSet 是一个没有重复元素的集合,不保证元素的顺序

HashSet 允许有 null 元 素

  1. LinkedHashSet
  2. TreeSet
  • queue:单向队列
    允许在队尾插入元素,在队头删除元素

经常被用来实现消息队列,任务队列等场景

Map

一个映射不能包含重复的键;每个键最多只能映射到一个值。

  • HashMap
  • LiLinkedHashMap
  • TreeMap
  • ConcurrentHashMap
  • Hashtable

泛型

本质:“参数化类型”。将原来具体的类型参数化
作用:避免了强转的操作,在编译器完成类型转化,也就避免了运行的错误。

泛型的使用

泛型类

  1. 泛型类声明
  • 格式:

class 名称<泛型列表>

如:

class People <E>//People是泛型类的名称,E是其中的泛型
  1. 泛型类的类体
    和普通类一样,由成员变量和方法组成
  2. 使用泛型类声明对象
    和普通类相比,泛型类声明和创建对象时,类名后加了<>,且必须具有具体的类型替换<>中的泛型。
    如:
Cone<Circle> coneOne;
coneOne =new Cone<Circle> (new Circle());

泛型接口

把泛型定义在接口
格式:

public interface 接口名<泛型类型> {
}

泛型方法

把泛型定义在方法上
格式:

public <泛型类型> 返回类型 方法名(泛型类型 变量名) {
}

判断一个方法是否是泛型方法:
方法返回值前面没有<>标记的类型,那就不是

通配符

如常用的 T E K V ?

上届通配符

用extends关键字声明

下届通配符

用super关键字声明