Java 中的集合
集合
-
纲要
Collection 和 Iterator
List
Set
Map
Collections工具类
Comparable 与 Comparator
- 数组其实也是一个集合。集合实际上就是一个容器,可以容纳其他类型的数据
- 集合是一个容器一个载体,可以一次容纳多个对象
- 在实际开发中,假设连接数据库,数据库中有10条记录,那么假设把这10条记录查询出来,在Java程序中会将10条数据封装成10个Java对象,然后将10个Java对象放到某一个集合中。将集合传到前端,然后遍历集合,将一个数据一个数据展现出来。
- 集合不能直接存储基本数据类型,也不能直接存储java对象,集合中存储的都是java对象的内存地址。(或者说集合中存储的是引用)
- 注意:
- 集合在java中本身是一个容器,是一个对象
- 集合在任何时候存储的都是引用
- 在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构中什么是数据结构?数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。例如:
数组、二叉树、链表、哈希表。。。图
以上这些都是常见的数据结构。
你往集合c1中放数据,可能放在数组上了。使用不同的集合等同于使用了不同的数据结构。
- 集合在Java JDK中哪个包下:
- java.util.*;所有的集合类和集合接口都在这个java.util包下
-
为了更好的掌握集合这块内容,最好可以将集合的继承结构图背会!!!
-
在Java中集合分为两大类:
- 一类是单个方式存储元素:单个方式存储元素,这一类集合中超级父接口:java.util.Collection
- 一类是以键值对儿的方式存储元素:键值对儿的方式存储元素,这一类集合中超级父接口:java.util.Map
Iterator it= “Collection 对象”.iterator();it是迭代器对象。
所有集合继承Iterable的含义是,所有集合都是可迭代的。遍历就是迭代
- List集合存储元素的特点:有序可重复,存储的元素有下标,有序实际上是存进去是这个顺序,取出来还是这个顺序,这里的顺序不是按照大小排序。List集合都有下标,下标从0开始
- Set集合存储元素的特点:无序不可重复,存进去进去是这个顺序,取出来不一定是这个顺序了,另外Set集合中元素没有下标,Set集合中的元素不能重复。
- ArrayList:ArrayList集合底层采用了数组这种数据结构。ArrayList集合是非线程安全的。
- LinkedList:LinkedList集合底层采用了双向链表数据结构
- Vector:Vector集合底层采用了数组这种数据结构,Vector集合是线程安全的,Vector所有的方法都有synchronized关键字修饰的,所以线程安全,但是效率较低,现在保证线程安全有别的方案,所以Vector使用较少了。
- HashSet:实际上HashSet集合在new的时候,底层实际上new了一个HashMap集合,向HashSet集合中存储元素,实际上向HashMap存储元素。HashMap集合是一个哈希表数据结构
- TreeSet:TreeSet集合底层实际上是TreeMap,new TreeSet集合的时候,底层实际上new了一个TreeMap集合。往TreeSet集合中放数据的时候实际上将数据到TreeMap集合中了。TreeMap集合底层采用了二叉树数据结构。


- SortedSet:这是一个接口,SortedSet集合存储元素特点:由于继承Set集合,它也是无序不可重复,但是放到SortedSet集合中的元素可以自动排序,我们称为可排序集合,放到该集合中的元素是自动按照大小排序的
- Map集合和Collection集合没有关系。Map集合以key和value的这种键值对的方式存储元素。key和value都是存储java对象的内存地址。所有Map集合的key特点:无序不可重复。Map集合的key和Set集合存储元素特点相同。
- HashMap集合:底层是哈希表数据结构,是非线程安全的。
- Hashtable集合:底层是哈希表数据结构。是线程安全的,其中所有的方法都带有synchronized关键字,效率低,现在使用较少了,现在有控制线程安全更好的方案。


- 总结:
-
ArrayList:底层是数组
-
LinkedList:底层双向链表
-
Vector:底层数组,线程安全,效率较低,使用较少
-
HashSet:底层HashMap,放到HashSet的元素,等同于放到HashMap集合key部份了
-
TreeSet:底层是TreeMap,放到TreeSet集合的元素等同于放TreeMap集合的key部份
-
HashMap:底层哈希表,
-
Hashtable:底层哈希表,线程安全,效率较低,使用较少
-
Properties:线程安全,key和value只能存储字符串String
-
TreeMap:底层二叉树,TreeMap的key可以自动按照大小顺序排序
List集合存储元素特点:有序可重复,这里的有序指的是:存进去的顺序和取出来的顺序相同。
Set集合存储元素的特点:无序不可重复。
SortedSet集合存储元素的特点:首先无序不可重复,元素是可排序的。
Map集合的key,就是一个Set集合。往Set集合中放数据,实际上放到Map集合的key部份。

浙公网安备 33010602011771号