1 Collection接口 1.1 集合前言 Java语言的java.util包中提供了一些集合类,这些集合类又称之为容器 提到容器不难想到数组,集合类与数组最主要的不同之处是,数组的长度是固定的,集合的长度是可变的,而数组的访问方式比较单一,插入/删除等操作比较繁琐,而集合的访问方式比较灵活?
?
?常用的集合类有List集合,Set集合,Map集合,其中List集合与Set集合继承了Collection接口,各个接口还提供了不同的实现类.
?
1.2 集合概念 集合的英文名称是Collection,是用来存放对象的数据结构,而且长度可变,可以存放不同类型的对象,并且还提供了一组操作成批对象的方法.Collection接口层次结构 中的根接口,接口不能直接使用,但是该接口提供了添加元素/删除元素/管理元素的父接口公共方法. 由于List接口与Set接口都继承了Collection接口,因此这些方法对于List集合和Set集合是通用的.
1.3 集合的继承结构 Collection接口 List 接口【数据有下标,有序,可重复】 ArrayList子类 LinkedList子类 Set 接口【数据无下标,无序,不可重复】 HashSet子类 Map 接口【键值对的方式存数据】 HashMap子类 ?
1.4 Collection方法速查表
?
2 泛型
2.1 概念
?
其实就是< ? >的部分,它就是泛型 泛型是(Generics)JDK1.5 的一个新特性,通常用来和集合对象一起使用 泛型概念非常重要,它是程序的增强器,它是目前主流的开发方式
2.2 作用 那泛型有什么作用呢? 我们可以把泛型理解成一个“语法糖”,本质上就是编译器为了提供更好的可读性而提供的一种小手段,小技巧,虚拟机层面是不存在所谓“泛型”的概念的。是不有点神奇,不知所云,别着急等我讲完你就清楚了。
我们可以通过泛型的语法定义<>,来约束集合中元素的类型,编译器可以在编译期根据泛型约束提供一定的类型安全检查,这样可以避免程序运行时才暴露BUG,代码的通用性也会更强 泛型可以提升程序代码的可读性,但是它只是一个“语法糖”(编译后这样的部分会被删除,不出现在最终的源码中),所以不会影响JVM后续运行时的性能.
2.3 泛型示例 示例1 : 我们创建一个ArrayList,看到eclipse发出黄线警告,这是为什么呢? 原因:ArrayList定义时使用了泛型,在声明时需要指定具体的类型
?
?
?
有了泛型,我们可以看到要求存放的是String类型,而测试时存放的是int类型的100,所以编译器报错: 类型List的add方法要求添加的类型为String类型,int类型不匹配,不能正确存入
2.4 泛型声明
泛型可以在接口 类 方法上使用
?
在方法的返回值前声明了一个,表示后面出现的E是泛型,而不是普通的java变量
2.5 常用名称
?
3 List接口 3.1 概述 有序的colletion(也称为序列).此接口的用户可以对列表中的每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引(在列表中的位置)来访问元素,并搜索列表中的元素.
3.2 特点 元素都有下标 数据是有序的 允许存放重复的元素 3.3 List方法速查表
4 ArrayList
4.1 概述
- 存在java.util包中
- 内部是用数组结构存放数据,封装数组的操作,每个对象都有下标
- 内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长
- 查询快,增删数据效率会低
?
4.2 创建对象?
5 LinkedList
5.1 概述
链表,两端效率高,底层就是链表实现的
?
5.2 创建对象 LinkedList() 构造一个空列表
5.3 常用方法 void addFirst(E e) 添加首元素 void addLast(E e) 添加尾元素 E getFirst() 获取首元素 E getLast() 获取尾元素 E element() 获取首元素 E removeFirst() 删除首元素 E removeLast() 删除尾元素
boolean offer(E e) 添加尾元素 boolean offerFirst(E e) 添加首元素 boolean offerLast(E e) 添加尾元素 E peek() 获取首元素 E peekFirst() 获取首元素 E peekLast() 获取尾元素 E poll() 返回并移除头元素 E pollFirst() 返回并移除头元素 E pollLast() 返回并移除尾元素 ?
?
?
?
?
|