JavaSE之集合类

本文深入探讨了集合框架的概念、组成部分及其实现。详细介绍了List、Set、Map等接口及其具体实现,如ArrayList、LinkedList、HashSet、HashMap等,并对比了ArrayList与Vector、LinkedList的主要区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你了解集合框架?
集合框架概念

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

  • 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

开始探讨集合类!!!!!!

在探讨之前我先放个集合类的大概逻辑图:这里写图片描述


开始啦!!!!!

Collection结合接口
该接口常用的方法:

这里写图片描述


List(允许数据重复)
  • public E get(int index)——-根据索引取得保存数据
  • public E set(int index,E element)——-修改数据


    重点来啦!!!

三个子类:
  • ArrayList子类
    该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。
  • Vector子类
    该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍
  • LinkedList


    极其重要!!!!!!


    请解释ArrayList与Vector的区别
  • 历史时间:ArrayList是从JDK1.2提供的,而Vector是JDK1.0提供的

  • 处理形式:ArrayList是异步处理,性能比较高,而Vector是同步处理,性能比较低
  • 数据安全:ArrayList是非线程安全,Vector是性能安全
  • 输出形式:ArrayList支持Iterator、ListIterator、foreach;Vector支持Iterator、ListIterator、foreach、Enumeration
请解释ArrayList与LinkedList区别
  • ArrayList封装的是数组,LinkedList封装的是链表
  • ArrayList时间复杂度为1,而LinkedList的复杂度为n


    Set集合接口
    两个子类:
  • HashSet(无需存储)
  • TreeSet(有序存储)


    面试题:
  • 如果两个对象的hashCode()同,equals()不同结果是什么?
    不能消除
  • 如果两个对象的hashCode()同,equals()相同结果是什么?
    不能消除

集合输出
四种手段:
  • Iterator(迭代)
  • ListIterator(双向迭代)
  • 判断是否有上一个元素:public boolean hasPrevious();
  • 取得上一个元素:public E previous();
  • 如果要想进行双向迭代,那么就必须依靠Iterator 的子接口
  • Enumeration(枚举)
  • 要想取得这个接口的实例化对象,是不能依靠Collection、List、Set等接口的。只能够依靠Vector子类,因为 Enumeration最早的设计就是为Vector服务的,在Vector类中提供有一个取得Enumeration接口对象的方法:

  • foreach


Map集合
常用的方法:

这里写图片描述


常用的四个子类:
请解释HashMap与Hashtable的区别这里写图片描述
  • TreeMap
  • ConcurrentHashMap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值