Java集合 个人整理

 

 

集合与数组的区别

长度区别:数组是固定的 集合是可变的

内容的区别:数组可以是基本类型,也可以是引用类型 但是集合只能是引用类型

元素内容: 数组只能存储同一种类型 集合可以存储不同类型(但一般的时候也是存储同一类型)

Collection集合的方法:

boolean add(E e)在集合的末尾添加元素 

boolean remove(Object o若本类集中有值与o的值相等的元素,则删除该元素,并返回true

void clear  清除本类集中所有元素,调用完该方法后本类集将为空。
boolean contains(Ob iect o)判断集合中是否包含某元素
boolean isEmpty()判断集合是否为空
int size() 返回集合中的元素个数
boolean addA11(Collection c) 将一个类集c中的所有元素添加到另一个类集
Object[] toArray()返回一个包含了本类集中所有元素的数组,数组类型为: object[]
Iterator iterator() 迭代器,集合的专用遍历方式

Collection接口的接口 对象的集合(单列集合)

List 接口:元素按进入先后有序保存,可重复  实现类有 LinkedList  ArrayList Vector Stack 是Vector类的实现类

 LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全

优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)

优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)

 LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全

 LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全

优点:LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,对于新增和删除操作add和remove,LinedList比较占优势。LinkedList 适用于要头尾操作或插入指定位置的场景

缺点:因为LinkedList要移动指针,所以查询操作性能比较低。

List和Set的区别

2.List:
(1)ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素
(2)LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素
(3)Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素

Set集合
特点:
1. 特点:无序,不重复

2. 遍历:foreach,迭代器

3.  扩容: 初始容量16,负载因子0.75,扩容增量1倍

 实现类
HashSet
特点:
1.它存储唯一元素并允许空值,依据对象的hashcode来确定该元素是否存在

2. 由HashMap支持

3. 不保持插入顺序

4. 非线程安全

5. 性能参数:初始容量,负载因子,默认值: 初始容量16,负载因子0.75,示例:new HashSet<>(20, 0.5f);

TreeSet

1. 是一个包含有序的且没有重复元素的集合

2. 作用是提供有序的Set集合,自然排序或者根据提供的Comparator进行排序

3. TreeSet是基于TreeMap实现的

Map接口的介绍

特点:

键值对(key,value),键不能重复,值可以重复,每个键可以映射到最多一个值;
键重复则覆盖,没有继承Collection接口;
可以不同键指向同一Value;
支持用户自由绑定Key值与Value;
可以直接访问Key值获得对应Value
扩容:

初始容量16,负载因子0.75,扩容增量1倍

基本方法(注:实现类都可以使用这些方法!)

1、containsKey(key):在map中是否有key存在,存在返回true,反之返回false

2、putIfAbsent(key, value):先判断指定的键(key)是否存在,不存在则将键/值对插入

3、遍历:forEach((key, value)

4、放入:put(key, value)

5、通过Key取得value:get(key)

6、获取迭代器的方法:

keySet()
entrySet()

Map实现类介绍
HashMap
基本介绍

线程不安全,最常用,速度快,无序(HashMap的无序是指不会记录插入的顺序,也不会根据特定规则进行排序; 但是HashMap存值的时候会根据key的hashCode()来计算存储的位置(位置是散列的,所以说其无序),删除时是删除元素)
内部采用数组来存放数据
HashMap是查询效率最高的数据结构

Map实现类介绍
HashMap
基本介绍

线程不安全,最常用,速度快,无序(HashMap的无序是指不会记录插入的顺序,也不会根据特定规则进行排序; 但是HashMap存值的时候会根据key的hashCode()来计算存储的位置(位置是散列的,所以说其无序),删除时是删除元素)
内部采用数组来存放数据
HashMap是查询效率最高的数据结构

TreeMap

  • key值按一定的顺序排序,基于红黑树,容量无限制,非线程安全,比较常用
  • 添加或获取元素时性能较HashMap慢(因为需求维护内部的红黑树,用于保证key值的顺序)
  • 能比较元素的大小,根据key比较(元素的自然顺序,集合中自定义的比较器也可排序)TreeMap
  • key值按一定的顺序排序,基于红黑树,容量无限制,非线程安全,比较常用
  • 添加或获取元素时性能较HashMap慢(因为需求维护内部的红黑树,用于保证key值的顺序)
  • 能比较元素的大小,根据key比较(元素的自然顺序,集合中自定义的比较器也可排序)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值