JavaSE集合概述

什么是集合

集合实际上就是一个容器,可以来容纳其他类型的数据。集合是一个载体,可以一次容纳多个对象。
数组其实就是一个最简单的集合。

集合中存储的什么

存储内容:
集合在java中本身是一个容器,是一个对象。集合不能直接存储基本数据类型,也不能直接存储java对象。集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用)
存储方式:
在java中每个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放在了不同的数据结构中(数据存储的结构就是数据结构,不同的数据结构,存储的方式不同)

new ArrayList();//创建一个集合,底层是数组
new LinkList();//创建一个集合,底层是链表
new TreeSet();//创建一个集合对象,底层是二叉树

在java中集合分为两大类:
一类是单个方式存储元素,这一类集合中超级父接口:java.util.Collection
一类是以键值对(key-value)方式存储元素,这一类集合的超级父接口是:java.util.Map

常用的集合

Collection接口中常用的集合

Collection接口 单个方式存储
	List接口 有序(存取顺序一样)可重复,存储元素有下标
		ArrayList类
			底层采用数组数据结构,查询快,增删慢
			ArrayList是非线程安全的
		LinkedList类
			底层采用双向链表数据结构
			非线程安全,查询慢,增删快
		Vector类
			底层采用数组数据结构
			Vector是线程安全的(synchronized关键字修饰)效率低
	Set接口 无序(存取顺序不一样)不可重复,元素没有下标
		HashSet类
			在创建时,底层实际上创建的是HashMap集合,HashMap集合是一个哈希表数据结构
		SortedSet接口 放在SortedSet集合中的元素可以自动排序
			TreeSet类
				在创建时,底层实际上创建了一个TreeMap集合,TreeMap集合是二叉树数据结构

Map接口中常用的集合
Map集合以key-value键值对形式存储,key和value都是存储java对象的内存地址,所有map集合key的特点都是无序不可重复的。map集合的key和set集合存储元素特点相同

Map接口
	HashMap类
		底层是哈希表数据结构,是非线程安全的
	HashTable类
		底层是也是哈希表数据结构,是线程安全的,效率低,使用少(有其他方式保证线程安全)
			Porperties类
				是线程安全的(继承了HashTable)另外properties存储元素的时候也是采用key-value的形式存储,并且key和value支支持String类型不支持其他类型。Properties被称为属性类。
	SortedMap接口 key存储元素的特点,key是无序不可重复的,且放在该集合中的可以会自动排序
		TreeMap类
			TreeMap集合是二叉树数据结构

注意:上述无序/有序是指,存取时顺序不一样/一样,与SortedMap接口实现集合类的自动排序不冲突

总结(所有实现类):

Collection

  • ArrayList:底层是数组。
  • LinkedList:底层是双向链表
  • Vector:底层是数组,线程安全的,效率低,使用少
  • HashSet:底层时HashMap,放到HashSet集合中的元素等同于放到HashMap集合key部分了(HashMap中的key要求不能重复),value部分一致使用一个相同的须知来保存。
  • TreeSet:底层时TreeMap,放到TreeSet集合中的元素等同于放到TreeMap集合key部分了。

Map

  • HashMap:底层是哈希表数据结构
  • HashTable:底层是哈希表数据结构,线程安全,使用较少。
  • Properties:时线程安全的,并且 key和value只能存储字符串String
  • TreeMap:底层是二叉树。TreeMap集合中的key可以自动按大小顺序排序

List集合存储元素的特点:
有序可重复
有序是指存进去的顺序和取出的顺序是一样的
Set集合存储元素的特点:
无序不可重复
无序是指存进去的顺序和取出的顺序不一定相同,且Set集合中元素没有下标
SortedSet集合存储元素的特点:
无序不可重复,但是SortedSet结合中的元素是可排序的。
无序是指存进去的顺序和取出的顺序不一定相同,且Set集合中元素没有下标
可排序是指可以按照大小顺序自动排序

Map集合的key就是一个Set集合,往Set集合中放数据,实际上放到了Map集合的key部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值