应用程序开发——集合(Collection、Iterator迭代器、foreach、list、set)

本文详细介绍了Java集合框架的基础概念,包括Collection和Map接口的区别与联系,List、Set的主要实现类及特性,以及常用的迭代方法。同时深入探讨了ArrayList、LinkedList、HashSet、LinkedHashSet和TreeSet的特点与应用场景。

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

集合概述:(用于存储数量不等的多个任意类型的对象)
面向对象对事物的体现都是以对象的形式,使用数组存储对象具有一些弊端,而集合就像一种容器,可以动态地把多个对象的引用放入容器中,很好的解决数组中存在的弊端
数组弊端:
●  存储的数据类型需相兼容
●  先声明长度后使用
●  一旦定义了长度就不可修改(集合默认10个长度,创建一次增加一次)
------------------------------------------------------------------------------------------------------------------
集合分为:
●  Collection接口:是List、Set等的父接口,此接口没有实现类,而是提供更具体的子接口来实现(如:Set和List)
●  Map接口
------------------------------------------------------------------------------------------------------------------
Collection接口方法:(声明对象:Collection  coll = new  ArrayList())
●  size():查询集合中元素的个数
●  add(Object  o):向集合中添加元素(对象)
●  addAll(Collection  c):向集合中添加集合,添加到当前集合元素(对象)的末尾
●  contains(Object  o):传入的对象是否在集合中存在,存在返回true,否则false
●  containsAll(Collection  c):传入的集合是否被当前集合包含,完全包含(集合中的元素)返回true,否则false
●  isEmpty():判断集合是否为空,为空返回true,否则false
●  clear():清除集合中的所有元素
●  remove(Object  o):移除集合中指定的元素(首次出现的元素)
●  removeAll(Collection  c):传入集合,移除当前集合中存在的所有元素
●  toArray():集合转换成数组
●  Arrays.asList(Object[ ]  o):数组转换成集合
●  equals():判断两个集合是否相等(集合中相同下标位的元素是否相等)
●  hashCode():集合中每个元素通过计算哈希值累加的值
------------------------------------------------------------------------------------------------------------------
Iterator接口:(迭代器,主要用于遍历Collection集合中的元素)

注意:调用next()之前必须要调用hasNext()进行检测,若不调用且下一条记录无效,直接调用next()会抛出NoSuchElementException异常
------------------------------------------------------------------------------------------------------------------
foreach循环遍历:

------------------------------------------------------------------------------------------------------------------
List接口常用实现类:List集合存储的对象是有序的,可重复的
●  ArrayList:List集合主要实现类,底层是由数组实现的,线程不安全(运行速度快)
●  LinkedList:数据链存储,对于频繁的新增,删除集合中的元素效率很高
●  Vector:很古老,大多数操作和ArrayList相同,线程安全的(运行速度慢)
------------------------------------------------------------------------------------------------------------------
List接口特有方法:(声明对象:List  list =  new  ArrayList())
●  add(int  index,Object  o):在指定的下标位插入元素(下标:0—长度-1,之前此位置的元素依次后移)
●  addAll(int  index,Collection  c):在指定的下标位插入新的集合到当前集合
●  get(int  index):得到当前集合中指定下标位的元素
●  remove(int  index):移除指定下标位的元素
●  set(int  index,Object  o):修改指定下标位的元素为传入的元素
●  indexOf(Object  o):查询指定元素在集合中第一次出现的下标位(未查询到  则返回-1)
●  lastIndexOf(Object  o):指定的元素在当前集合中最后一次出现的下标位
●  subList(int  fromIndex, int  toIndex):从开始下标位截取到结束下标位,含开始下标位,不含结束下标位(左闭右开)
注意:当集合存放引用数据类型时,做比较需重写引用数据类型的equals()方法
------------------------------------------------------------------------------------------------------------------
Set接口常用实现类:存储的对象是无序的,不可重复的。无序:存放是无序,不是指显示的顺序是无序
Set接口没有提供额外的方法。判断两个对象是否相同不是使用==,而是根据equals方法
HashSet:(Set集合主要实现类,线程不安全
●  根据Hash值来指定当前对象存放的位置(每个对象计算出的Hash值不同,所以存储是无序)
●  判断两个元素相等的标准:两个对象通过hashCode()方法比较相等,并且equals()方法返回值也相等
●  对于存放在Set容器中的对象,对应的类一定要重写equals()和hashCode()方法,以实现对象相等规则

注意:重写hashCode()方法的基本原则:在程序中,同一个对象多次调用hashCode()方法应该返回相同的值。当两个对象的equals()方法比较返回true时,这两个对象的hashCode()方法返回值也应相等

------------------------------------------------------------------------------------------------------------------

LinkedHashSet
●   是HashSet的子类
●   使用链表方式进行存储

●   插入性能略低于HashSet,但在迭代访问Set里的全部元素时有很好的性能

------------------------------------------------------------------------------------------------------------------

TreeSet:(存放对象的类型必须相同,是SortedSet接口的实现类,取出的值排了序的
●  自然排序:(默认,并按升序排列)

注意:存入元素为基本数据类型时,集合自动排序。当为引用数据类型时,则需要在引用数据类型中指定排序的方法(引用类型该对象的类中实现Comparable接口并重写compareTo()方法在其中指明排序方式)。compareTo()方法比较的是两个属性的大小,如果相同则认为是相同的对象,如果不相同,则进入hashCode()方法计算它的Hash值,Hash值不同再进入equals()方法比较
●  定制排序:(在外部声明Comparator的对象,并重写它的compareTo()方法

------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,还望告知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值