Java集合

Java集合

集合学习笔记系列 续更

1. 框架概述

Collection
在这里插入图片描述
 集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。

2. 数组和集合的区别

集合的由来:
数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义, 这样太麻烦了! 所以, Java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少.

区别1:

数组既可以存储基本数据类型,又可以存储引用数据类型, 基本数据类型存储的是值, 引用数据类型存储的是地址值;
集合只能存储引用数据类型(对象), 集合中也可以存储基本数据类型,但是在存储的时候会自动装箱(JDK1.5新特性)变成对象.

区别2:
数组长度是固定的,不能自动增长;集合的长度的是可变的, 可以根据元素的增加而增长.

使用情况:

①. 如果元素个数是固定的, 推荐用数组

②. 如果元素个数不是固定的, 推荐用集合

3. Java集合常见的接口和实现类

在这里插入图片描述

4.方法详细信息

size
int size()返回此 collection 中的元素数。如果此 collection 包含的元素大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE。

返回:
此 collection 中的元素数


isEmpty
boolean isEmpty()如果此 collection 不包含元素,则返回 true。

返回:
如果此 collection 不包含元素,则返回 true


contains
boolean contains(Object o)如果此 collection 包含指定的元素,则返回 true。更确切地讲,当且仅当此 collection 至少包含一个满足 (onull ? enull : o.equals(e)) 的元素 e 时,返回 true。

参数:
o - 测试在此 collection 中是否存在的元素。

返回:
如果此 collection 包含指定的元素,则返回 true

抛出:
ClassCastException - 如果指定元素的类型与此 collection 不兼容(可选)。

NullPointerException - 如果指定的元素为 null,并且此 collection 不允许 null 元素(可选)。


iterator
Iterator iterator()返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此 collection 是某个能提供保证顺序的类实例)。

指定者:
接口 Iterable 中的 iterator

返回:
在此 collection 的元素上进行迭代的 Iterator


toArray
Object[] toArray()返回包含此 collection 中所有元素的数组。如果 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。
返回的数组将是“安全的”,因为此 collection 并不维护对返回数组的任何引用。(换句话说,即使 collection 受到数组的支持,此方法也必须分配一个新的数组)。因此,调用者可以随意修改返回的数组。

此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。

返回:
包含此 collection 中所有元素的数组


toArray
T[] toArray(T[] a)返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。如果指定的数组能容纳该 collection,则返回包含此 collection 元素的数组。否则,将分配一个具有指定数组的运行时类型和此 collection 大小的新数组。
如果指定的数组能容纳 collection,并有剩余空间(即数组的元素比 collection 的元素多),那么会将数组中紧接 collection 尾部的元素设置为 null。(只有 在调用者知道此 collection 没有包含任何 null 元素时才能用此方法确定 collection 的长度。)

如果此 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。

像 toArray() 方法一样,此方法充当基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许对输出数组的运行时类型进行精确控制,并且在某些情况下,可以用来节省分配开销。

假定 x 是只包含字符串的一个已知 collection。以下代码用来将 collection 转储到一个新分配的 String 数组:

 String[] y = x.toArray(new String[0]); 注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。 

参数:
a - 存储此 collection 元素的数组(如果其足够大);否则,将为此分配一个具有相同运行时类型的新数组。
返回:
包含此 collection 中所有元素的数组
抛出:
ArrayStoreException - 如果指定数组的运行时类型不是此 collection 每个元素运行时类型的超类型
NullPointerException - 如果指定的数组为 null


add
boolean add(E e)确保此 collection 包含指定的元素(可选操作)。如果此 collection 由于调用而发生更改,则返回 true。(如果此 collection 不允许有重复元素,并且已经包含了指定的元素,则返回 false。)
支持此操作的 collection 可以限制哪些元素能添加到此 collection 中来。需要特别指出的是,一些 collection 拒绝添加 null 元素,其他一些 collection 将对可以添加的元素类型强加限制。Collection 类应该在其文档中清楚地指定能添加哪些元素方面的所有限制。

如果 collection 由于某些原因(已经包含该元素的原因除外)拒绝添加特定的元素,那么它必须 抛出一个异常(而不是返回 false)。这确保了在此调用返回后,collection 总是包含指定的元素。

参数:
e - 确定此 collection 中是否存在的元素。
返回:
如果此 collection 由于调用而发生更改,则返回 true
抛出:
UnsupportedOperationException - 如果此 collection 不支持 add 操作
ClassCastException - 如果指定元素的类不允许它添加到此 collection 中
NullPointerException - 如果指定的元素为 null,并且此 collection 不允许 null 元素
IllegalArgumentException - 如果元素的某属性不允许它添加到此 collection 中
IllegalStateException - 如果由于插入限制,元素不能在此时间添加


remove
boolean remove(Object o)从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。更确切地讲,如果此 collection 包含一个或多个满足 (onull ? enull : o.equals(e)) 的元素 e,则移除这样的元素。如果此 collection 包含指定的元素(或者此 collection 由于调用而发生更改),则返回 true 。

参数:
o - 要从此 collection 中移除的元素(如果存在)。
返回:
如果此调用将移除一个元素,则返回 true
抛出:
ClassCastException - 如果指定元素的类型与此 collection 不兼容(可选)
NullPointerException - 如果指定的元素为 null,并且此 collection 不允许 null 元素(可选)。
UnsupportedOperationException - 如果此 collection 不支持 remove 操作


containsAll
boolean containsAll(Collection<?> c)如果此 collection 包含指定 collection 中的所有元素,则返回 true。

参数:
c - 将检查是否包含在此 collection 中的 collection
返回:
如果此 collection 包含指定 collection 中的所有元素,则返回 true
抛出:
ClassCastException - 如果指定 collection 中有一个或多个元素的类型与此 collection 不兼容(可选)
NullPointerException - 如果指定 collection 包含一个或多个 null 元素,并且此 collection 不允许 null 元素(可选),或者指定的 collection 为 null


addAll
boolean addAll(Collection<? extends E> c)将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。如果在进行此操作的同时修改指定的 collection,那么此操作行为是不确定的。(这意味着如果指定的 collection 是此 collection,并且此 collection 为非空,那么此调用的行为是不确定的。)

参数:
c - 包含要添加到此 collection 的元素的 collection
返回:
如果此 collection 由于调用而发生更改,则返回 true
抛出:
UnsupportedOperationException - 如果此 collection 不支持 addAll 方法
ClassCastException - 如果指定 collection 中某个元素的类不允许它添加到此 collection 中
NullPointerException - 如果指定 collection 包含 null 元素,并且此 collection 不支持 null 元素,或者指定的 collection 为 null
IllegalArgumentException - 如果指定 collection 的元素的某属性不允许它添加到此 collection 中
IllegalStateException - 如果由于插入限制,不是所有的元素都能在此时间添加


removeAll
boolean removeAll(Collection<?> c)移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。此调用返回后,collection 中将不包含任何与指定 collection 相同的元素。

参数:
c - 办好要从此 collection 移除的元素的 collection
返回:
如果此 collection 由于调用而发生更改,则返回 true
抛出:
UnsupportedOperationException - 如果此 collection 不支持 removeAll 方法
ClassCastException - 如果此 collection 中一个或多个元素的类型与指定 collection 不兼容(可选)
NullPointerException - 如果此 collection 包含一个或多个 null 元素,并且指定的 collection 不支持 null 元素(可选),或者指定的 collection 为 null


retainAll
boolean retainAll(Collection<?> c)仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素。

参数:
c - 包含保留在此 collection 中的元素的 collection
返回:
如果此 collection 由于调用而发生更改,则返回 true
抛出:
UnsupportedOperationException - 如果此 collection 不支持 retainAll 操作
ClassCastException - 如果此 collection 中一个或多个元素的类型与指定 collection 不兼容(可选)
NullPointerException - 如果此 collection 包含一个或多个 null 元素,并且指定的 collection 不允许 null 元素(可选),或者指定的 collection 为 null


续更


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值