List Set Map集合关系类图
UML
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
1. Collection接口
集合框架的顶级接口,是Set和List的父接口,但不是Map的父接口
集合中只能添加引用类型数据
2. List接口
2.1 特点:有序、对象可以重复(不唯一)
2.2 遍历方式
1 下标(for)
2 foreach(>=jdk1.5)
3 迭代器Iterator(原理)
1.hasNext():判断迭代器中的下一个元素是否存在,如果存在则为true,不存在则为false
2.next():移动下表并取出当前元素
2.3 List优化
1.初始容量:10
List集合的初始容量为10,如果往里面加50条数据,容量就会不够,会自动按照计算公式扩容
2.负载因子:1.5
3.计算公式:初始容量*负载因子(向下取整)
10*1.5=15,15*1.5=22(22.5)
4. 指定初始容量new ArrayList(指定的容量);
2.4 List元素删除
1.for循环正向删除
2.for循环逆向删除
3.迭代器删除
3. 泛型(JDK1.5之后):以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
4. 装箱、拆箱(jdk1.5之后引入了自动装箱及自动拆箱功能)
java中的八大基础类型:int / short / long / float / double / char / boolean / byte
值类型->引用类型 :装箱
引用类型->值类型 :拆箱
5. ArrayList、LinkedList、Vector区别
ArrayList:以连续的数组结构存储数据,查询快(下标)、增删改慢
LinkedList:以链表的结构存储数据,查询慢、增删改快
Vector:增删改查都慢,已过时,线程安全,同步(同步及排队)
1. Set
1.1 特点:无序、对象不能重复
1.2 遍历
1.2.1 foreach
1.2.2 迭代器
1.3 常用实现类
HashSet
TreeSet:根据某种(规则)对里面的元素进行排序
自然比较接口: java.lang.Comparable
比较器: java.util.Comparator
String以AscII码进行比较,返回差值
LinkedHashSet:
1)元素是有顺序的
2)元素是不重复的
3)底层数据结构是按照链表的结构存储的 Linked
hashCode:
队列 Queue:表示一个先入先出的数据结构(自行研究)
堆栈 Stack:表示一个先进后出的数据结构
压:push
弹:pop
1. Map
1.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复
它没有继承Collection接口
1.2 遍历
1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
1.2.2 先取出保存所有Entry的Set,再遍历此Set即可
2.HashMap与Hashtable之间的区别(重点)
hashtable: 同步(synchronized)既排队 线程安全的
hashmap: 异步 线程非安全的
3. 其它
3.1 Collections:工具类,提供一组静态方法操作Collection集合
3.2 Arrays:工具类,提供了一组静态方法操作数组
4.TreeMap:排序
1.key的升序
2.key的降序
3.value的升序与降序
升序:a.getValue().hashCode()-b.getValue().hashCode();
降序:-(a.getValue().hashCode()-b.getValue().hashCode());