数组就是一个集合。集合就是一个能够容纳其他数据的容器。
集合常在开发时使用:
集合是一个容器,一个载体,可以容纳多个对象。在实际开发中,假设连接一个数据库,数据库中有十条数据,假设查询十个数据,那么我们的java程序就会把这十个数据封装进十个java对象,放到某个集合中,然后把集合发送到前端,遍历集合,将数据一个一个显示出来。
集合不能直接存储基本数据类型,也不能直接存储java对象,集合存储的是java对象的内存地址(引用)。
list.add(10); // 自动装箱Integer
注意:
集合本身也是一个对象
集合在任何时候存储的都是内存地址(引用);
在java中每一个不同的集合,底层都会对应了不同的数据结构。往不同的集合中存放数据,就等于将数据存放到了不同的数据结构中。
常见的数据结构有 数组、链表、二叉树、hashMap、图等。
使用不同的集合等于使用不同的数据结构。
在java中,数据结构已经实现了,已经写好了常用的集合类,我们只需要知道在什么情况下选择使用哪一个集合即可。
new LinkedList(); 创建了一个集合对象,底层是链表
new ArrayList();创建了一个集合对象,底层是数组
java.util.*;
所有的集合类和集合接口都在java.util包下
在Java中集合分为两大类:
Collection集合继承脑图:
以键值对的方式存储元素:超级父接口:java.util.Map;
有序:存入和取出的顺序相同,每一个元素都有下标
可重复:存入一个张三,还可以再存入一个张三
实现类:
ArrayList: 底层是数组,线程不安全
Linkedlist: 底层是双向链表
Vector: 底层是数组,线程安全,效率较低,使用较少
无序:存入和取出的顺序不一定相同,Set元素都没有下标
不可重复:不能存两个张三
实现类:
HashSet: 底层是HashMap,放到HashSet集合中的元素实际上都会进入HashMap的key部分
TreeSet: 底层是TreeMap,放到TreeSet集合中的元素实际上都会进入TreeMap的key部分
无序不可重复,但SortedSet集合中的元素是可排序的
无序:存入和取出的顺序不一定相同,Set元素都没有下标
不可重复:不能存两个张三
可排序:可以按照大小顺序排序
Map中的key就是一个Set集合,往Set集合中存放数据,实际放到了Map集合中的key部分
HashMap: 底层是哈希表
Hashtable: 底层是哈希表,线程安全,效率较低,使用较少
Properties: 继承自Hashtable线程安全,key和value只能存放String类型
无序不可重复,但SortedSet集合中的元素是可排序的
无序:存入和取出的顺序不一定相同,Set元素都没有下标
不可重复:不能存两个张三
可排序:可以按照大小顺序排序
TreeMap: 底层是二叉树,TreeMap集合中的key可以按大小自动排序
原文:https://www.cnblogs.com/TSCCG/p/14802183.html