Java 集合有关的总结

集合

含义

1.集合是Java API所提供的一系列类,可以用于动态存放多个对象(集合只能存放对象,如果是想存int,则要存放int的包装类Integer)
2.集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型就行(集合中不能存放基本数据类型,但可以放基本数据类型的包装类)
3.集合类均支持泛型,是一种数据安全的做法

集合与数组的不同

数组:一旦初始化后,长度不可变;元素类型受限定(String类型的数组只能装String类型的数据);数组可以存储基本数据类型

集合:长度可变的序列,元素类型不受限定(一个集合可以存储多种类型的元素);结合只能存储引用类型的数据

集合继承关系图

在这里插入图片描述

Collection和Map区别

Colletion存单个值,其中实现了List接口的实现类可以获取迭代器进行遍历
Map存两个值(key-value),不可以获得迭代器,不能遍历(可以间接遍历)

Collection家族

List接口

特点:有序且可重复
实现类:
	1.ArrayList
	2.LinkedList
	3.Vector
	4.Stack

Set接口

特点:无序且不可重复
实现类:
	1.HashSet
	2.LinkedHashSet
	3.TreeSet
注:无序 ≠ 随机,无序仅表示存入顺序和取出顺序不一致

Map家族

实现类:
	1.HashMap
	2.LinkedHashMap
	3.HashTable
	4.ConcurrentHashMap
	5.TreeMap
    6.Properties

比较ArrayList和LinkedList

1.LinkedList添加了:
			栈模式removeLast()
			队列模式removeFirst()
2.ArrayList底层是一维数组,LinkedList底层是双向链表
	添加	-- 不扩容的情况下:ArrayList更快
			 扩容的情况下:LinkedList更快	
	删除	--	LinkedList更快
	查找	--	ArrayList更快
	修改	--	ArrayList更快
	注:工作中常用ArrayList,因为许多需求都需要使用查询功能,ArrayList查询更快

各种集合的应用场景

ArrayList	存数据,线程不安全。在数据的查询、修改上有效率优势。(不扩容的情况下,添加也有效率优势)
LinkedList	需要用到队列模式、栈模式时使用,线程不安全。
Vector		弃用,线程安全
Stack		弃用,线程安全
HashSet		去重+无序,线程不安全
LinkedHashSet	去重+有序,线程不安全
TreeSet		去重+排序,重复、排序规则可以自定义,线程不安全。
HashMap		存key+value,key去重,无序,线程不安全。
LinkedHashMap	存key+value,key去重,有序,线程不安全。
HashTable	弃用,线程安全
ConcurrentHashMap	存key+value,key去重,无序,线程安全,据不加锁、CAS-效率高
TreeMap		存key+value,针对key排序、去重,排序、去重规则可以自定义
Properties	配置文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值