Java集合——更新中

本文深入解析Java集合框架,包括Collection、List、Set等接口及其实现类如ArrayList、LinkedList、HashSet、TreeSet的特性与应用场景。探讨不同集合的底层结构、操作效率与线程安全性,帮助开发者选择最适合需求的集合类型。
摘要由CSDN通过智能技术生成

Collection

  • 只能存引用类型
  • 分为Collection和Map两大类
  • 实现Iterable接口,可迭代
  • 删除多个相同对象用迭代器迭代删除
  • 基本方法:add() remove() contains() iterator() ->hasNext()->next()->remove

List

  • 有序,存储顺序与添加顺序相同
  • 可存储相同元素
  • 增加了针对索引的操作 add() remove() get() set()
  • 注意!!!调用contains和remove方法时,需要重写对象的equals方法
  • sort函数,形参comparator接口,在调用时,可以传递Comparator的匿名内部类对象
    o1>02,升序
    o2>o1,降序

ArrayList

  • 底层是数组
  • 易于访问不易于修改,如插入元素:可能需要扩容复制、移动
  • 初始化大小为10,扩容1.5倍大小

Vector

  • 底层是数组
  • 易于访问不易于修改,如插入元素:可能需要扩容复制、移动
  • 初始化大小为10,扩容2倍大小
  • 线程安全

LinkedList

  • 底层是双向链表,访问慢,添加删除效率高
  • 添加了针对第一个/最后一个元素的操作 removeFirst() removeLast() addFirst() addLast() getLast() getFirst()
  • 模拟栈:push() pop()
  • 模拟队列:offer() poll()

应用场景

  • 存储可以重复的数据,选择List集合
  • 访问为主:ArrayList
  • 添加/删除为主:LinkedList
  • 多线程:CopyOnWriteArrayList

Set

  • 无序,存储顺序与添加顺序可能相同
  • 不可以存储相同元素

HashSet

  • 底层hashmap
  • 向hashset添加元素就是向底层的hashmap添加键
  • hashset是hashmap键的集合

TreeSet

  • 底层Treemap
  • 向treeset添加元素就是向底层的treemap添加键
  • treeset是treemap的集合
  • TreeSet实现了SortedSet接口,可以对集合中元素自然排序,要求元素是可比较的:comparable
  • (1)在构造方法中,指定comparator比较器
  • (2)没有通过构造方法,要求元素类实现comparable接口
  • 注意!!!TreeSet先选择comparator,没有再看元素类有没有comparable

应用场景

  • 存储数据不可以重复,选择Set集合
  • 不需要对Set集合元素排序:HashSet
  • 需要对Set集合元素排序:TreeSet
  • 多线程:不需要排序:CopyOnWriteArraySet,需要排序:ConcurrentSkipListSet

注意

  • 在TreeSet中,contains、remove方法通过Compatrator/Comparable的比较结果是否为0判断,比较结果为0就是同一个对象
  • 创建TreeSet不在构造方法中指定comparator,要求元素实现Comparable接口
  • HashSet比较元素需要调用equals方法,如存储自定义对象需要重写equals方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值