Java基础之Collection与Collections浅析
Java基础之Collection与Collections浅析
一、前言:
位于Java.util包下的Collection与Collections都是Java中重要的工具类,它们都是Java集合框架的成员,这俩个类对于Java基础不太好的朋友来说很容易搞混,现在我对其做一简单辨析
二、Collection简单介绍:
2.1Collection概述
Collection是Java集合框架的顶级接口(注意:它是一个接口),继承了Iterable接口
它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
2.2常用方法摘要:
- boolean add(E e)
- boolean addAll(Collection<? extends E> c)
- void clear()
- boolean contains(Object o)
- boolean containsAll(Collection<?> c)
- boolean equals(Object o)
- int hashCode()
- boolean isEmpty()
- Iterator<E> iterator()
- boolean remove(Object o)
- boolean removeAll(Collection<?> c)
- boolean retainAll(Collection<?> c)
- int size()
- Object[] toArray()
- <T> T[]toArray(T[] a)
三、collections简单介绍:
3.1Collections简单概述:
java.util.Collections 是一个包装类(工具类/帮助类)。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,用于对集合中元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。
Collections中的方法都是静态方法,这正好体现了工具类的设计原则,便于开发者直接调用;
此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。
如果为此类的方法所提供的 collection 或类对象为 null,则这些方法都将抛出 NullPointerException。
此类中所含多态算法的文档通常包括对实现 的简短描述。应该将这类描述视为实现注意事项,而不是规范 的一部分。实现者应该可以随意使用其他算法替代,只要遵循规范本身即可。(例如,sort 使用的算法不一定是合并排序算法,但它必须是稳定的。)
此类中包含的“破坏性”算法,即可修改其所操作的 collection 的算法,该算法被指定在 collection 不支持适当的可变基元(比如 set 方法)时抛出 UnsupportedOperationException。如果调用不会对 collection 产生任何影响,那么这些算法可能(但不要求)抛出此异常。例如,在已经排序的、不可修改列表上调用 sort 方法可能会(也可能不会)抛出 UnsupportedOperationException。
3.2常用方法摘要:
|
addAll(Collection<? super T> c, T... elements) 将所有指定元素添加到指定 collection 中。 |
|
|
asLifoQueue(Deque<T> deque) 以后进先出 (Lifo) Queue 的形式返回某个 Deque 的视图。 |
|
|
binarySearch(List<? extends Comparable<? super T>> list, 使用二分搜索法搜索指定列表,以获得指定对象。 |
|
|
binarySearch(List<? extends 使用二分搜索法搜索指定列表,以获得指定对象。 |
|
|
checkedCollection(Collection<E> c, Class<E> type) 返回指定 collection 的一个动态类型安全视图。 |
|
|
checkedList(List<E> list, 返回指定列表的一个动态类型安全视图。 |
|
|
checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType) 返回指定映射的一个动态类型安全视图。 |
|
|
checkedSet(Set<E> s, Class<E> type) 返回指定 set 的一个动态类型安全视图。 |
|
|
checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType) 返回指定有序映射的一个动态类型安全视图。 |
|
|
checkedSortedSet(SortedSet<E> s, Class<E> type) 返回指定有序 set 的一个动态类型安全视图。 |
|
|
copy(List<? super 将所有元素从一个列表复制到另一个列表。 |
|
static boolean |
disjoint(Collection<?> c1, Collection<?> c2) 如果两个指定 collection 中没有相同的元素,则返回 true。 |
|
|
emptyList() 返回空的列表(不可变的)。 |
|
|
emptyMap() 返回空的映射(不可变的)。 |
|
|
emptySet() 返回空的 set(不可变的)。 |
|
|
enumeration(Collection<T> c) 返回一个指定 collection 上的枚举。 |
|
|
fill(List<? super 使用指定元素替换指定列表中的所有元素。 |
|
static int |
frequency(Collection<?> c, Object o) 返回指定 collection 中等于指定对象的元素数。 |
|
static int |
indexOfSubList(List<?> source, List<?> target) 返回指定源列表中第一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。 |
|
static int |
lastIndexOfSubList(List<?> source, List<?> target) 返回指定源列表中最后一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。 |
|
|
list(Enumeration<T> e) 返回一个数组列表,它按返回顺序包含指定枚举返回的元素。 |
|
|
max(Collection<? extends 根据元素的自然顺序,返回给定 collection 的最大元素。 |
|
|
max(Collection<? extends T> coll, 根据指定比较器产生的顺序,返回给定 collection 的最大元素。 |
|
|
min(Collection<? extends 根据元素的自然顺序 返回给定 collection 的最小元素。 |
|
|
min(Collection<? extends T> coll, 根据指定比较器产生的顺序,返回给定 collection 的最小元素。 |
|
|
nCopies(int n, 返回由指定对象的 n 个副本组成的不可变列表。 |
|
|
newSetFromMap(Map<E,Boolean> map) 返回指定映射支持的 set。 |
|
|
replaceAll(List<T> list, 使用另一个值替换列表中出现的所有某一指定值。 |
|
static void |
reverse(List<?> list) 反转指定列表中元素的顺序。 |
|
|
reverseOrder() 返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。 |
|
|
reverseOrder(Comparator<T> cmp) 返回一个比较器,它强行逆转指定比较器的顺序。 |
|
static void |
rotate(List<?> list, 根据指定的距离轮换指定列表中的元素。 |
|
static void |
shuffle(List<?> list) 使用默认随机源对指定列表进行置换。 |
|
static void |
shuffle(List<?> list, 使用指定的随机源对指定列表进行置换。 |
|
|
singleton(T o) 返回一个只包含指定对象的不可变 set。 |
|
|
singletonList(T o) 返回一个只包含指定对象的不可变列表。 |
|
|
singletonMap(K key, 返回一个不可变的映射,它只将指定键映射到指定值。 |
|
|
sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序。 |
|
|
sort(List<T> list, 根据指定比较器产生的顺序对指定列表进行排序。 |
|
static void |
swap(List<?> list, 在指定列表的指定位置处交换元素。 |
|
|
synchronizedCollection(Collection<T> c) 返回指定 collection 支持的同步(线程安全的)collection。 |
|
|
synchronizedList(List<T> list) 返回指定列表支持的同步(线程安全的)列表。 |
|
|
synchronizedMap(Map<K,V> m) 返回由指定映射支持的同步(线程安全的)映射。 |
|
|
synchronizedSet(Set<T> s) 返回指定 set 支持的同步(线程安全的)set。 |
|
|
synchronizedSortedMap(SortedMap<K,V> m) 返回指定有序映射支持的同步(线程安全的)有序映射。 |
|
|
synchronizedSortedSet(SortedSet<T> s) 返回指定有序 set 支持的同步(线程安全的)有序 set。 |
|
|
unmodifiableCollection(Collection<? extends 返回指定 collection 的不可修改视图。 |
|
|
unmodifiableList(List<? extends 返回指定列表的不可修改视图。 |
|
|
unmodifiableMap(Map<? extends K,? 返回指定映射的不可修改视图。 |
|
|
unmodifiableSet(Set<? extends 返回指定 set 的不可修改视图。 |
|
|
unmodifiableSortedMap(SortedMap<K,? extends 返回指定有序映射的不可修改视图。 |
|
|
unmodifiableSortedSet(SortedSet<T> s) 返回指定有序 set 的不可修改视图。 |
四、Collection与Collections的异同:
- 相同点:二者都是Java集合框架的成员,都位于java.util包下
- 不同之处:Collection是Java集合框架的顶级接口,继承自Iterable,他是一个泛型接口,充分的体现了Java的多态性
Collections是Java集合框架的工具类,服务于Collection。提供了对Java集合操作的各种静态方法
参考:https://baike.baidu.com/item/COLLECTION/80124?fr=aladdin
Java基础之Collection与Collections浅析的更多相关文章
- Java基础之多态和泛型浅析
Java基础之多态和泛型浅析 一.前言: 楼主看了许多资料后,算是对多态和泛型有了一些浅显的理解,这里做一简单总结 二.什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面 ...
- Java学习笔记--Collection和Collections的区别
转自 http://pengcqu.iteye.com/blog/492196 比较Collection 和Collections的区别. 1.java.util.Collection 是一个集合 ...
- Java基础学习-Collection体系结构和迭代测试
package Collection; import java.util.ArrayList; import java.util.Collection; import java.util.Iterat ...
- ——Java中的collection和collections的区别
1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Coll ...
- 【JAVA - 基础】之Annotation注解浅析
注解在JAVA中,尤其是一些ORM框架(如Hibernate等)中是比较常用的一种机制. 注解是JAVA 1.5之后引入的新功能,正确来说是反射的一部分,没有反射,注解也就无法正常使用.注解可以理解成 ...
- Java基础学习-Collection
package Collection; import java.util.ArrayList; import java.util.Scanner; /*集合类的特点: * 大小可变 * * Array ...
- java基础-Comparator接口与Collections实现排序算法
java 排序Comparable和Comparator使用 java提供了两个排序用的接口Comparable和Comparator,一般情况下使用区别如下: Comparable 接口用于类的固定 ...
- Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)
一.Comparable接口, Collections类 List的常用算法: sort(List); 排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个 ...
- Java集合(三)--Collection、Collections和Arrays
Collection: Collection是集合类的顶级接口,提供了对集合对象进行基本操作的通用接口方法.Collection接口的意义是为各种具体的集合提供了最大化 的统一操作方式,其直接继承接口 ...
随机推荐
- 利用Github Pages创建的Jekyll模板个人博客添加阅读量统计功能
目录 前言 准备工作 模板文件修改 写在最后 内容转载自我自己的博客 @(文章目录) 前言 Jekyll 是一个简单的免费的 Blog 生成工具,类似 WordPress .它只是一个生成静态网页的工 ...
- 将个人网站主页设置为Tomcat默认打开页面
步骤: 1.打开server.xml,在</Host>的上一行添加内容格式如下 <Context path="" reloadable="true&qu ...
- 《VR入门系列教程》之13---相机与立体渲染
相机.透视图.视口.投影 渲染好的场景都需要一个可以供用户查看的视图,我们通常在3D场景中用相机来提供这种需求.相机相对场景有位置和方向,就像我们生活中的相机一样,它也提供透视图查看方式,这种 ...
- eval 与 exec, compile区别
exec 不是表达式: python 2. x, 中的一个语句和 python 3. x. 中的一个函数它编译并立即计算一个字符串中包含的语句或者语句集. 例如: exec('print(5)') # ...
- Netty 客户端使用指数退避机制实现重连
指数退避 可以理解为每次重连失败时,就把重连时间设置为之前的指数级别.例如 2 秒,4 秒,8 秒...... 亚马逊AWS关于指数退避的两篇文章介绍 AWS 中的错误重试和指数退避 Exponent ...
- vue.js主要内容
vue的主要内容 1.了解vue 2.vue开发环境的搭建和脚手架工具的使用 3.vue具体的指令和项目实战 1.了解vue 1.具备基础:html.css.js,模块化概念.ES6语法(简单即可) ...
- Redis 学习笔记(篇七):Redis 持久化
因为 Redis 是内存数据库,它将自己的数据储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据也将会丢失,为了解决这个问题,Redis ...
- 解释一下一门语言该有的东东(Javascript)
注释 Js中有两种注释 // 单行注释 /**/ 多行注释 变量 变量就像学校学习的 未知数 如 3 + x = 8 x: 类似变量,在改造一下 x + y = z 当 x=3, y=5, z=8, ...
- Vue组件间通信-Vuex
上回说到Vue组件间通讯,最后留了一个彩蛋~~~Vuex.Vuex是另一种组件通讯的方法,这节来说说Vuex(store仓库). 首先Vuex需要安装,安装的方式有很多,在这里就不一一细说了.我是通过 ...
- 七天学会NodeJS——第一天
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:http://nqdeng.github.io/7-days-nodejs Node.js 是一个能 ...