集合:集合就是Java中提供的一个容器,可以用来储存多个数据。
1、 Collection表示一组对象,是集中搜集的意思。
1.1、Collection中包含两个子接口
(一)、List接口
(二)、Set接口
1.2、Collection是集合框架的顶级接口
1.3、Collection是List和Set的父接口,所有List和Set的实现类都有上面的方法。
2、 List接口
(1) 特点 :有序(每个元素都有索引标记)、对象可重复(允许加入可重复的元素)
(2)遍历方式 :(一)、for循环根据下标遍历
(二)、foreach遍历
(三)、迭代器Iterator(迭代器是一种对象,能够用来遍历目标中部分或者全部元素)
(3)子类
(一)、Vector 区别: 线程安全、效率慢
(二)、ArrayList 区别: 底层是数组实现的,实现了数组的动态扩容,其查找效率较高,添加删除效率较低,非线程安全
(三)、LinkedList 区别: 底层是采用双向链表进行实现的,查找效率较低,添加删除效率较高,非线程安全
(4)List优化内存
初始容量为10,负载因子10*1.5(可指定初始容量)
3、 Set
(1)特点 :无序。对象不能重复
(2)遍历方式 :(一)、foreach遍历
(二)、迭代器
(3)常用实现类
(一)、HashSet
(二)、TreeSet:根据某种规则对里面的元素进行排序
规则1: java.lang.Comparable
规则2: java.util.Comparator
4、 Map
(1)、特点 :无序、已键值对的形式添加元素,键不能重复,值可以重复,没有继承Collection接口
(2)、遍历 :
(一)、先取出保存所有键的Set,再遍历Set即可
(二)、先取出保存所有Entry的Set,再遍历此Set即可
(3)、实现类 :
(一)、Map接口的实现类有HashMap、TreeMap、HashTable、Properties等,常用类有HashMap和HashTable。
(二)、HashMap采用哈希算法实现,是Map接口最常用的实现类。 由于底层采用了哈希表存储数据,我们要求键不能重复,如果发生重复,新的键值对会替换旧的键值对。 HashMap在查找、删除、修改方面都有非常高的效率。
HashTable类和HashMap用法几乎一样,底层实现几乎一样,只不过HashTable的方法添加了synchronized关键字确保线程同步检查,效率较低。
(三)、HashMap和HashTable的区别
HashMap: 线程不安全,效率高。允许key或value为null。
HashTable: 线程安全,效率低。不允许key或value为null。