注意: 单列型是指 只有值(value);双列型是指 键值对形式(key-value)
1、List集合
特点: 1)、属于有序集合,存储元素和取出元素的顺序是一样的(存储:123;取出:123)
2)、具有索引,可以使用一些包含索引的方法(如:能 使用 普通 for 循环)
3)、允许存储重复的元素
4)、操作索引时,要注意 索引越界 的情况
(1)、ArrayList集合:底层是 数组结构 ,所以 查询快、增删慢 ;属于有序集合
(2)、LinkedList集合:底层是 链表结构 ,所以 查询慢、增删快 ;属于有序集合
1)、LinkedList集合中包含了 大量 的 首尾元素操作 的方法
2)、使用LinkedList集合 特有方法 时,注意不能使用 多态
(3)、Vector集合:底层是 数组结构 ,所以 查询快、增删慢 ;属于有序集合
1)、该集合是 java1 的集合,自 java2 之后该集合就被 ArrayList集合 取代 了
2)、Vector集合使用了 synchronized 来修饰方法,所以可看成 线程安全 的ArrayList集合
2、Set集合
特点: 1)、没有索引,不能使用带索引的方法(如:不能 使用普通for 循环)
2)、不允许 存储重复元素
(1)、HashSet集合:底层是 哈希表结构 (可查看 哈希表结构 ),所以 查询非常快,属于 无 序集合
1)、HashSet集合不允许存储重复元素,是因为 java自带对象均重写了 hashCode() 和 equals()
2)、HashSet集合存储自定义对象时,为保证元素不能重复,需要 重写 hashCode() 和 equals()
(2)、LinkedHashSet集合:底层是 哈希表再加一条链表 ,所以 查询非常快,属于 有 序集合
(3)、TreeSet集合:底层是 二叉树结构
3、Map集合(可查看 Map集合的遍历方法与List集合、Set集合、Map集合的of 方法)
特点: 1)、Map集合中的 key与value的数据类型 可以相同,也可以不同
2)、Map集合中的key不允许重复,但是value允许重复
3)、Map集合中,key和value是一一对应的
(1)、HashMap集合:底层是 哈希表结构 (可查看 哈希表结构 ),所以 查询非常快,属于 无 序集合
1)、HashMap集合不允许存储重复元素,是因为 java自带对象均重写了 hashCode() 和 equals()
2)、HashMap集合存储自定义对象时,为保证元素不能重复,需要 重写 hashCode() 和 equals()
(2)、LinkedHashMap集合:底层是 哈希表再加一条链表 ,所以 查询非常快,属于 有 序集合
(3)、HashTable集合:底层是 哈希表结构(可查看 哈希表结构 ),所以 查询非常快,属于 无 序集合
HashTable集合与HashMap集合的比较:
1)、HashTable集合:线程安全、速度较慢;不允许存储null值、null键;
2)、HashMap集合:线程不安全、速度较快;允许存储null值、null键;
3)、HashTable集合在 java2开始被HashMap集合取代
但是HashTable集合的子类Properties集合是所有集合中唯一一个能和IO流相结合的集合
4、小结
此处暂且不论Vector集合与TreeSet集合,为容易比较,哈希表简称哈希
(1)、ArrayList集合:
单列集合;底层是数组结构,创建最快、查询较快、增删最慢;有序;可以重复元素;有索引;
(2)、LinkedList集合:
单列集合;底层是链表结构,创建较快、查询最慢、增删较快;有序;可以重复元素;有索引;
(3)、HashSet集合:
单列集合;底层是哈希结构,创建最慢、查询最快、增删最快;无序;不可重复元素;无索引;
(4)、LinkedHashSet集合:
单列集合;底层是哈希结构,创建最慢、查询最快、增删最快;有序;不可重复元素;无索引;
(5)、HashMap集合:
双列集合;底层是哈希结构,创建最慢、查询最快、增删最快;无序;键可但值不可;无索引;
(6)、LinkedHashMap集合:
双列集合;底层是哈希结构,创建最慢、查询最快、增删最快;有序;键可但值不可;无索引;
注: 可以发现,各个集合的特点,跟其底层数据结构的关系是密不可分的;
如:Set集合和Map集合,很多特点都是相同的,因为它们的底层数据结构都是哈希表