java常用集合总结

java常用集合总结

常用集合框架构成:
继承
继承
继承
Collection接口
Iterable接口
List集合
Set集合
ArrayList
LinkedList
HashSet
TreeSet
LinkedHashSet
HashMap
Map集合
TreeMap
LinkedHashMap
HashTable

可以从图中看出List集合与Set集合都继承于Collection(位于java.util包)接口,而Collection接口又继承于Iterable接口;且Map集合不继承任何接口

(一)Iterable

Iterable接口有两大特点:

  1. 实现Iterable接口的类可以增强for循环

  2. 实现Iterable接口的集合类必须提供iterator()方法,其返回类型为Iterator

    Iterator方法:
    (1). hasNext():是否存在下一项
    (2). next():获取下一项
    (3). remove():删除next()查询的最新一项

(二)Collection

Collection接口的方法:

  1. size():返回集合中的项数
  2. isEmpty():判断集合是否为空
  3. contains(Object):判断集合是否包含某项
  4. clear():清空集合元素
  5. add(E):从集合添加某项
  6. remove(Object):从集合删除某项
  7. iterator():遍历集合

这里看到Iterable接口和Collection接口都有remove()方法,那者两者有什么区别昵
(1)性能方面:
Collection的remove()方法是先查询被删除订单项的位置,而查询位置用的是单链表查询所以效率较低
Iterator的remove()方法是结合next()使用直接删除查询的最新一项,所以效率更高
(2)容错方面:
Collection在iterator遍历时使用remove()方法会报ConcurrentModificationException,因为集合中的对象被删除后iterator内部对象的个数并没有改变
Iterator便利时不会报错,因为Iterator内部集合与原集合对象个数保持一致

(三)List

ArrayList和LinkList的区别
ArrayList(数组结构):

	优点:查询速度快
	缺点:新增删除速度慢

LinkedList(链表结构):

	优点:新增删除速度快
	缺点:查询速度慢

Array与ArrayList有什么区别

  1. Array是数组,ArrayList是动态数组,ArrayList是Array的复杂版本
  2. 存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据
  3. 长度的可变:Array的长度是固定的,而ArrayList的长度是可变的

怎样将一个数组转成List,有什么方法

  1. 数组转集合:Arrays.asList(数组)
  2. 集合转数组:list.toArray()
(四)Set

HashSet、TreeSet、LinkedHashSet区别?

  1. 速度快的集合:HashSet
  2. 有排序功能的集合:TreeSet
  3. 按照插入顺序存储的集合:LinkedHashSet
(五)Map

HashMap、TreeMap、linkedHashMap区别

  1. 在Map中新增、删除和查询,使用HashMap速度最快
  2. 有排序功能的集合:TreeMap
  3. 按照插入顺序存储的集合:LinkedHashMap

HashMap的实现原理
通过put和get存储和获取对象,以键值对的方式存取值,且会根据自身的储存空间的占用情况自动扩容,比如16*0.75=12;集合容量为16,集合的扩容因子为75%,所以当集合容量到12时机会自动扩大集合容量到32

HashMap和HashSet区别

HashMapHashSet
实现了Map接口实现了Set接口
存储键值对存储对象
添加元素用:put()添加元素用:add()
使用key计算hashcode数值使用成员对象计算hashcode数值
比HashSet较快比HashMap较慢

List、Set、Map之间的区别

ListSetMap
有序、有下标、可重复无序、无下标、不可重复键值对存储,键不可重复,值可重复
可以有多个null只能有一个null键只能有一个null,值可有多个null
根据下标取值使用iterator根据键取值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值