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

集合概述: (用于存储数量不等的多个任意类型的对象)
面向对象对事物的体现都是以对象的形式,使用数组存储对象具有一些弊端,而集合就像一种容器,可以动态地把多个对象的引用放入容器中,很好的解决数组中存在的弊端
数组弊端:
●  存储的数据类型需相兼容
●  先声明长度后使用
●  一旦定义了长度就不可修改(集合默认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()方法

------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,还望告知
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值