Collection解析

java集合类详解

集合类的继承关系详解图

在这里插入图片描述

List解析

ArrayList 和 Vector的区别

  1. ArrayList 是线程不安全的,Vector是线程安全的。
  2. ArrayList 每次增加的容量是当前容量的 50%,而Vector是每次都是增加当前容量的100%
  3. ArrayList和Vector都是使用数组来实现的。
  4. 他们的父类都是AbstractList 都实现了List接口,所以他们的方法都是一样的.
  5. 都实现了RandomAccess接口,支持随机访问,是随机访问标志。在实现了改接口的类中,使用for循环遍历,要比使用Iterator遍历更快。
  6. Vector可以设置增长因子,而ArrayList不可以。

LinkedList 和 ArrayList的区别

  1. LinkedList 底层使用双向链表来实现数据存储,ArrayList底层使用数组来实现数据存储。
  2. LinkedList 的父类是AbstractSequentialList,ArrayList的父类是AbstractList,都实现了List接口,LinkedList实现了Deque接口
  3. 性能区别,LinkedList的随意的增删改 的性能会比ArrayLisy表现更优秀,而在查询数据,尤其是根据索引查询数据的情况下,ArrayList会表现的更加优秀。
Set解析

Set中元素不可以重复,是无序的(这里无序是指存入元素的先后顺序与输出元素的先后顺序不一致)

TreeSet和HashSet

  1. TreeSet 和HashSet 都是线程不安全的,TreeSet 底层存储的数据结构是二叉树,HashSet的底层存储结构是哈希表。
  2. TreeSet不能存放null值,TreeSet是有序的,TreeSet排序方法有两个,一个是自然排序,一个是定制排序,定制排序时,排序对象必须实现Comparable接口,重写compareTo(Object obj)方法, TreeSet 判断对象是否相等时,是通过对象的equals方法来判断的。
  3. HashSet可以存放null值,但是只能存一个null值,HashSet 是无序的。HashSet是根据对象的Hash值来决定对象的存储方法,HashSet判断对象是否相等的依据是对象的HashCode()方法和equals()方法,所有重写equals()方法时必须同时重写HashCode()方法
  4. TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。
  5. TreeSet和HashSet的父类都是AbstractSet,TreeSet实现了NavigableSet,HashSet实现了Set接口,NavigableSet又继承了SortSet接口。

HashMap 和HashTable

  1. 都继承了Map接口,底层数据基于hash表。
  2. HashMap 是线程不安全的 可以存在null Key和null Value,但只能存在一个。
  3. Hashtable 是线程安全的,不允许null key和value。
  4. HashMap 相同key,后来的数据会覆盖前面的value。

常用方法

  1. size()

    集合的大小

  2. isEmpty()

    集合是否为空

  3. toArray(T[])

    如果为空参则将集合转换成Object数组,如果传入的是T类型的数组,则会将集合中的数据放入对应的数据,如果传入的数据尺寸太小则会对数组重新构建并且返回新数组,如果过大会将其他未使用的置为null;

  4. clear()

    清空集合

  5. removeAll(Collection)

    移除与Collection的交集,

  6. contain(Object)

    判断当前集合中是否含有该对象,判断对象是否相等,根据该对象的equals方法.

  7. stream

    返回一个流

  8. removeIf(filter)

    删除符合要求的数据

Collections对象使用

  1. copy 集合拷贝
  2. max 集合最大值
  3. min 集合最小值
  4. replaceAll 替换
  5. sort 排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值