java笔记一
对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的功能
集合在java.util包中
Java的集合类主要有两个接口派生而出:Collection和Map。Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。
-
-
Iterator:迭代器,可以通过迭代器遍历集合中的数据
-
Map:是映射表的基础接口
和数组的区别:
-
数组的长度固定,集合长度不固定
-
数组可以存储基本类型和引用类型,集合只能存放引用类型
3迭代器:专门用来遍历集合的一种方式
-- hasNext()有下一个元素吗?如果有则返回true,否则false
--next();获取下一个元素
--remove();删除元素
2|0ArrayList【重点】
-
数组结构实现,查询快、增删慢
-
JDK1.2版本,运行效率快、线程不安全
源码分析: 默认容量:DEFAULT_CAPACITY=10
注意:如果没有向集合中添加任何元素,容量是0
存放元素的数组 elementDate
实际元素个数 size
扩容为原来的1.5倍
add()添加元素
Vector
-
数组结构实现,查询快、增删慢
-
JDK1.0版本运行效率慢、线程安全
LinkedList
-
链表结构实现,增删慢,查询慢
源码分析:
1.LinkedList
2.add方法
3|0Collection体系集合
-
List接口
特点:有序,有下标,元素可重复
它的类有
-
ArrayList 【重点】
-
LinkedList
-
-
-
Set接口方法全部继承collection
无序、无下标、元素不能重复
它的类有:
-
HashSet【重点】
-
基于HashCode计算元素存放位置
-
当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入
-
-
TreeSet--->SortedSet这个是用来排序的
-
基于排列顺序实现元素不重复
-
实现了SortedSet
-
元素对象的类型必须实现Comparable接口,
-
通过CompareTo方法确定是否为重复元素
-
-
Map集合
特点:用于存储任意键值对 -------- 存储一对数据
键:无序、无下标、不允许重复(唯一)
值:无序、无下标、允许重复
方法
-
V put(K key,V value)//将对象 存放到集合中,关联键值。key重复则覆盖原值
HashMap集合【重点】
-
线程不安全,运行效率快;允许使用null作为key或是value
总结
-
HashMap刚创建时,table是null,为了节省空间当添加第一个元素时,table的容量调整为64
-
当元素的个数大于阈值(16*0.75=12)时,会进行扩容,扩容后的大小为原来的2倍。目的是减少调整元素的个数
-
jdk1.8中 当每个链表长度大于8,并且数组元素个数大于64时,会调整为红黑树,目的:提高执行效率
-
jdk1.8 当链表长度小于6时,调整成链表
-
jdk1.8以前 。链表是头插入,jdk1.8以后链表是尾插入
3|1Collection父接口
特点:代表任意类型的对象,无序、无下标、不能重复。
方法:
-
boolean add(Object obj)//添加一个对象
-
boolean addAll(Collection c)//将一个集合中所有对象添加到此集合中
-
void clear()//清空此集合中的所有对象
-
boolean contains(Object o)//检查此集合中是否含有o对象
-
boolean equals(Object o)//比较此集合是否与指定对象相等
-
boolean isEmpty()//判断此集合是否为空
-
boolean remove (Object o)//在此集合中移除o对象
-
int size() //返回此集合中的元素个数
-
Object[] toArray() //将此集合转换为 数组
3|2泛型
泛型的本质是参数化类型,把类型作为参数来传递
常见的形式有泛型类、泛型接口、泛型方法
语法


浙公网安备 33010602011771号