什么是集和?
集和是一个容器,可以来容纳其他类型的数据
是一个载体,可以一次容纳多个对象
实际开发中,假设连接数据库,数据库有10条记录
假设把10条记录查询出来,在java程序中会将10条
数据封装成10个java对象,将10个java对象放到某一个集和中去
将集合传到前端,然后遍历集和,将一个数据一个数据展现出来
集合不能直接存储基本数据类型,另外集和也不能直接存储java对象,
集合当中存储的都是java对象的内存地址
java中每一个不同的集合,底层会对应不同的数据结构。
往不同的集合中存储元素,存到了不同的数据结构中
不同的数据结构,数据存储方式不同
new ArrayList();
new LinkedList();
new TreeSet();
集合都在 java.util.*;包下
java中集合分为两大类
一类是单个方式存储元素
这一类集合中超级父接口:java.util.Collection;
一类是以键值对的方式存储元素:
以这一类集合中的超级父接口是java.util.Map;
Map是key value 成对的存储
Iterator it = “Collection 对象”.iterator(); Iterator 父接口有一个iterator 方法
it 是迭代器对象,负责遍历
迭代器对象有 hasnext() ,next(),remove() 3个方法遍历
List集合存储元素特点
有序可重复
存储的元素有下标,有序因为List集合有下标
Set集合特点
无序不可重复
无序表示存进去是这个顺序,取出来就不一定是这个顺序了
Set集合中元素没有下标,Set集合中的元素还不能重复
-
ArrayList集合采用数组的数据结构(非线程安全)
-
LinkedList集合采用双向链表数据结构
-
Vector集合采用数组这种数据结构(线程安全,但是效率低,几乎不用)
synchronized关键字修饰,所以线程安全,但是现在有别的方法保证线程安全
HashSet实现类创建的时候,底层其实创建了HashMap集合
实际上是存储到HashMap集合中,是一个Hash表数据结构
TreeSet实现类创建的时候,底层其实创建了TreeMap集合
实际上是存储到TreeMap集合中,是一个二叉树结构
SortedSet集合存储元素的特点:
由于继承了Set集合,所以他的特点也是无序不可重复
但是放在SortedSet集合中的元素可以自动排序
我们称为可排序集合。放到该集合中的元素
是自动按照大小顺序排序的
总结(所有的实现类):
ArrayList:底层是数组
LinkedList:底层是双向链表
VeEtor:底层是数组,线程安全的,效率较低,使用较少
HashSet:底层是HashMap,放到HashSet集合中的元素等同于放到HashMap集合key部分了
TreeSet:底层是TreeMap,放到TreeSet集合中的元素等同于放到TreeMap集合key部分了
HashMap:底层是哈希表
Hashtable:底层也是哈希表,只不过线程安全的,效率较低,使用较少
Properties:是线程安全的,并且key和value只能存储字符串String。。
TreeMap:底层是二叉树。TreeMap集合的key可以自动按照大小顺序排序。
List集合存储元素的特点:。
有序可重复。
有序:存进去的顺序和取出的顺序相同,每一个元素都有下标。。
可重复:存进去1,可以再存储一个1.0
Set (Map)集合存储元素的特点:。
无序不可重复。
无序:存进去的顺序和取出的顺序不一-定相同。另外Set集合中元素没有下标。
不可重复:存进去1,不能再存储1了。。
SortedSet (SortedMap)集合存储元素特点:。
首先是无序不可重复的,但是SortedSet集合中的元素是可排序的。。
无序:存进去的顺序和取出的顺序不一定相同。另外Set集合中元素没有下标。.
不可重复:存进去1,不能再存储1了。。
可排序:可以按照大小顺序排列。。
Map集合的key,就是一个Set集合。。
往Set集合中放数据,实际上放到了Map集合的key部分。。