在学数组的时候,JDK为我们提供了一个Arrays类,该类提供了许多静态方法来操作数组。

同时针对集合类也提供了一个Collections类,同样也提供了许多静态方法来对集合进行操作。

Collection 和Collections的区别:

java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

Collections提供的方法分类:

空集合

Collections.EMPTY_LIST,Collections.emptyList()——返回只读的空LIST 集合

Collections.EMPTY_MAP,Collections.emptyMap()——返回只读的空MAP集合

Collections.EMPTY_SET,Collections.emptySet()返回只读的空SET集合

所谓的空集合指的是没有元素在这些集合中,特别需要注意的是返回的集合都是只读的。当尝试修改时会抛出UnsupportedOperationException异常。

单元素集合

Collections中的单元素集合指的是集合只有一个元素而且集合只读。

Collections.singletonList——用来生成只读的单一元素的List

Collections.singletonMap——用来生成只读的单Key和Value组成的Map

Collections.singleton——用来生成只读的单一元素的Set

只读集合

Collections提供了几种生成只读集合的方法:unmodifiableCollection,unmodifiableList,unmodifiableMap,unmodifiableSet,unmodifiableSortedMap,unmodifiableSortedSet。这些集合一旦初始化以后就不能修改,任何修改这些集合的方法都会抛出UnsupportedOperationException异常。

Checked集合(Checked Collections)

Checked集合具有检查插入集合元素类型的特性,例如当我们设定checkedList中元素的类型是String的时候,如果插入其他类型的元素就会抛出ClassCastExceptions异常,Java5中提供泛型的功能,泛型功能能够在代码编译阶段就约束集合中元素的类型,但有些时候声明的集合可能是raw集合,编译阶段的类型约束就不起作用了,这个时候Checked集合就能起到约束集合中元素类型的作用。

Collections中提供了以下生成Checked集合的方法checkedCollection,checkedList,checkedMap,checkedSet,checkedSortedMap,checkedSortedSet

同步集合(Synchronized Collections)

Collections的synchronizedXxxxx系列方法顾名思义会返回同步化集合类(SynchronizedMap,SynchronizedList等等)。这些集合类内部实现都是通过一个mutex(互斥体)来实现对这些集合操作的同步化。

Enumeration接口

从JDK1.0开始Java就提供了Enumeration 接口。Collections中list和enumeration和Enumeration接口相关。

list(Enumeration<T> e) 方法用于有Enumeration接口中产生一个List

enumeration(Collection<T> c) 方法用于基于Collection返回Enumeration。

查找替换

fill——使用指定元素替换指定列表中的所有元素。

frequency——返回指定 collection 中等于指定对象的元素数。

indexOfSubList—— 返回指定源列表中第一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回 -1。

lastIndexOfSubList——返回指定源列表中最后一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回-1。

max—— 根据元素的自然顺序,返回给定 collection 的最大元素。

min——根据元素的自然顺序 返回给定 collection 的最小元素。

replaceAll——使用另一个值替换列表中出现的所有某一指定值。

集合排序

Collections还提供了集中对集合进行排序的方法。

reverse——对List中的元素倒序排列

shuffle——对List中的元素随机排列

sort——对List中的元素排序

swap——交换List中某两个指定下标位元素在集合中的位置。

rotate——根据指定的距离轮换指定列表中的元素。

其他方法

binarySearch——使用二进制搜索算法来搜索指定列表,以获得指定对象。

addAll——将所有指定元素添加到指定 collection 中。

copy——将所有元素从一个列表复制到另一个列表。

disjoint——如果两个指定 collection 中没有相同的元素,则返回 true。

nCopies——返回由指定对象的 n 个副本组成的不可变列表。

转载于:https://blog.51cto.com/zlfwmm/1709837

Java记录 -62- java.util.Collections相关推荐

  1. java记录目录树_Java记录

    java记录目录树 https://openjdk.java.net/jeps/359概述了Java的新功能,该功能可能会/将在某些将来的Java版本中实现. JEP建议使用一种新的"类别& ...

  2. java 记录考勤记录_Java中的记录器– Java记录示例

    java 记录考勤记录 Today we will look into Logger in Java. Java Logger provides logging in java programming ...

  3. java.util.Collections.synchronizedSet()方法的使用

    下面的例子显示java.util.Collections.synchronizedSet()方法的使用 package com.;import java.util.*;public class Col ...

  4. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  5. 带有Java Util日志记录的Java 8延迟调用

    在博客文章"在Log4j2中更好地执行非日志记录器调用"中 ,我介绍了可以在Log4j 2中使用的方法,这些方法可以减少或避免在基于指定日志级别实际上根本未记录的日志语句中调用方法 ...

  6. java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 算法是数据结构的灵魂! 好的算法搭配上合适的数据结构,可以让代码功能大大的提升效率. ...

  7. java order()_java.util.Collections.reverseOrder()

    描述 reverseOrder()方法被用来获取强加实现可比接口的对象collection的自然顺序相反的比较器. 声明 以下是java.util.Collections.reverseOrder() ...

  8. JDK源码解析之Java.util.Collections

    java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一个工具类,服务于Java的Collection框架. 一.源码解析 1.不可实例 ...

  9. java.util.Collections类使用(很多秘密,网上资料亲测)

    主要方法介绍: 对集合操作 主要方法: sort() 正排序 reverse()逆序 shuffle()打乱--->>>排扑克很有用. copy() 复制 max() 求集合最大值 ...

最新文章

  1. java json 去重_js操作两个json数组合并、去重,以及删除某一项元素
  2. 结构体对齐,#pragma pack
  3. 深蓝学院《从零开始手写VIO》作业六
  4. 点点客李新 | 移动社交电商行业案例干货分享
  5. [云炬创业基础笔记]第十一章创业计划书测试6
  6. SQL Server 中如何判断表是否存在
  7. JAVA实现链表面试题
  8. how is SAP UI5 bindItems implemented
  9. 安卓使用jdbc连接mysql_Android:使用JDBC连接MySql
  10. EtherCAT是什么?
  11. 机器学习算法_无监督机器学习算法:主成分分析
  12. nginx配置二级域名
  13. 链接列Uva 6176 Faulhaber's Triangle
  14. IOS UIwebView 加载网络图片 使用相对地址
  15. Linux基础——怎么样从手机 (Android安卓/IOS苹果) 通过 SSH 远程 Linux
  16. Linux第一讲(韩顺平)
  17. Openresty 学习笔记(二)Nginx Lua 正则表达式相关API
  18. 电路串联和并联图解_电路串联和并联的区别有哪些
  19. 微信扫一扫下载apk的实现方式 微信跳转浏览器代码
  20. 赴日本常见问题QA (2转 不明原处)

热门文章

  1. 计算机为什么找不到c盘d盘,电脑不显示是什么盘?是C盘还是D盘?怎么才能显示出来呢?...
  2. 金蝶应收应付模块流程_金蝶KIS专业版应收应付的系统亮点功能
  3. python求5_python(五)——运算符,小整数对象池
  4. 怎么连接屏幕_手机屏幕坏了也可以操作?这办法学会了再不怕碎屏
  5. python窗口显示图片imread() imshow()_Python-OpenCV学习之imread,imshow
  6. VMware虚拟机安装之后,打开时找不到启动Centos的界面
  7. CSS之布局(默认样式)
  8. vs按f5没反应_《死神vs火影》中最受欢迎的游戏角色,仙鸣当之无愧上榜
  9. 女神推荐, 卡片,广告图 ,点击查看更多
  10. 【Android OpenGL ES】阅读hello-gl2代码(二)Java代码