Java提供了一个操作Set List Map 的工具类Collections .
  里面有大量方法对集合元素进行排序,查询修改等操作。
  还能把集合设为不可变。
  对集合对象实现线程同步控制。

同步控制
在hashtable那提过,虽然他是线程安全的,但是他性能比较差,所以Collections.synchronizedXxx(new Xxx()) ,例子Collections.synchronizedCollection(new ArrayList())就能转为线程安全的。HashSet TreeSet ArrayList ArrayDeque LinkedLisr HashMap TreeMap都是线程不安全的。

排序操作:

以下常用的类方法可对List集合元素进行排序:

void reverse(List list) 反转List集合元素进行排序

void shuffle(List list) 按自然顺序对List排序,升序

void sort(List list)对List进行排序

void sort(List list,Comparator c)根据指定的Comparator 产生的顺序对List进行排序

 void swap(List list ,int i,int j)把list集合从i到j位置的集合元素交换,

void rotate(List list,int distance) 当distance为正数时,把List集合后distance个元素整体移到前面。如果是负数,则吧前distance个元素整体移到后面。不改变集合的长度
 
查找,替换操作
  static int binarySearch(List list,Object key) 二分搜索法来搜索指定对象在list索引。(只有有序状态List集合才能用二分查询
  static Object max(Collection coll) 根据元素的自然顺序,返回集合的最大元素
  static Object max(Comparator c,Collection coll) 根据指定Comparator 的给出的顺序,返回集合的最大元素
  static Object min(Collection coll) 根据元素的自然顺序,返回集合的最小元素
  static Object min(Comparator c,Collection coll) 根据指定Comparator 的给出的顺序,返回集合的最小元素

   static int frequency(Collection coll,Object key) 返回指定集合中指定对象的数量

   static void fill(Collection coll,Object obj) 用指定对象obj替换指定List集合中的所有元素

 static int indexOfSubList(List source,List target)返回指定子List对象在母List对象中出现的第一次出现位置索引。如果没有就返回-1
 static int LastIndexOfSubList(List source,List target)返回指定子List对象在母List对象中出现的最后一次出现位置索引。如果没有就返回-1

 static boolean replaceAll(List list,Object newVal,Object oldVal)用一个新值替换List集合里的旧值

设置不可变集合

emptyXxx()返回一个空的不可变的集合对象

singletonXxx()返回只包含指定对象的(只有一个或一项的)不可变的集合对象

unmodifiableXxx()返回指定集合对象的不可变的视图

下面举例子说明

.....待续

Collections工具类详解的更多相关文章

  1. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  2. Android开发 Html工具类详解

    前言 在一些需求富文本显示或者编辑的开发情况下,数据都是用html的格式来保存文本信息的.而google是有提供解析html的工具类那就是Html.有了Html可以让TextView也支持富文本(其实 ...

  3. 并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore)

    目录 1. 前言 2. 闭锁CountDownLatch 2.1 CountDownLatch功能简介 2.2 使用CountDownLatch 2.3 CountDownLatch原理浅析 3.循环 ...

  4. StringUtils工具类详解

    StringUtils判断字符串大概有四种方法: 下面是 StringUtils 判断是否为空的示例: 判断是否为空,但是要注意,空格不算空,这个最好能不用则不用. StringUtils.isEmp ...

  5. 常用开发库 - MapStruct工具库详解

    常用开发库 - MapStruct工具库详解 MapStruct是一款非常实用Java工具,主要用于解决对象之间的拷贝问题,比如PO/DTO/VO/QueryParam之间的转换问题.区别于BeanU ...

  6. QAction类详解:

    先贴一段描述:Qt文档原文: Detailed Description The QAction class provides an abstract user interface action tha ...

  7. IE8“开发人员工具”使用详解上(各级菜单详解)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/03/24/kaifarenyuangongju.html IE8“开发人员工具”使用详解上(各 ...

  8. 自动化运维工具——ansile详解

    自动化运维工具——ansible详解(一) 目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ...

  9. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  10. PowerShell攻防进阶篇:nishang工具用法详解

    PowerShell攻防进阶篇:nishang工具用法详解 导语:nishang,PowerShell下并肩Empire,Powersploit的神器. 开始之前,先放出个下载地址! 下载地址:htt ...

随机推荐

  1. Debian 下安装 Nginx

    Debian 下安装 Nginx 非常容易. apt update apt install nginx 输入以下命令查看是否可以正常访问, 顺便验证下安装是否成功. curl -I 127.0.0.1 ...

  2. pg的计算百分数的问题

    SELECT cast("dept_id" as varchar(32)) , cast("dept_name" as varchar(30)) AS &quo ...

  3. 读取excel单元格填过得的坑

    通过TdxSpreadSheet读取excel单元格值. 有一个cxDBTreeList来来表现科室单元,可是从科室单元excel文件中读取单元内容后,各种报错.一度怀疑cxdbtree的bug. 实 ...

  4. Python科学计算系列10—数论

    1.常用操作 代码如下: # coding=utf-8 from sympy import * from sympy.ntheory.modular import solve_congruence, ...

  5. kettle介绍-Step之Abort

    Abort中止介绍 中止步骤用于读取指定行数之后停止读取剩余行数,可以用于调试转换 Step Name:步骤的名称,在单一的转换中,名称必须唯一 Abort threshold:指定行数,转换读取到指 ...

  6. jmeter之多并发

    1.做压力测试时需要设置线程数,2.造数据时跑多接口多条数据需要设置线程数,并且保证每个线程的多接口顺序执行.3.需要设置数据不重复或者自增 一.设置线程数 主要用于压力测试需要多并发时设置线程数,以 ...

  7. 容器镜像基础(nydus)

    " 包括 nydus 的基本概念.架构和容器镜像加速使用方法. 1. nydus 1.1 存在的问题 对于容器镜像使用者 问题一:启动容器慢:容器启动慢的情况普遍发生在当用户启动一个很大的容 ...

  8. Cline技术分析:prompt如何驱动大模型对本地文件实现自主变更

    prompt如何驱动大模型对本地文件实现自主变更 在AI技术快速发展的今天,编程方式正在经历一场革命性的变革.从传统的"人写代码"到"AI辅助编程",再到&qu ...

  9. GoView:Start14.6k,上车啦上车啦,Vue3低代码平台GoView,零代码+全栈框架

    GoView:Start14.6k,上车啦上车啦,Vue3低代码平台GoView,零代码+全栈框架 项目介绍 GoView 是一个Vue3搭建的低代码数据可视化开发平台,将图表或页面元素封装为基础组件 ...

  10. ChatGPT为何放弃WebSocket?揭秘EventSource的三大决胜优势

    ChatGPT为何放弃WebSocket?揭秘EventSource的三大决胜优势 感觉本篇对你有帮助可以关注一下我的微信公众号(深入浅出谈java),会不定期更新知识和面试资料.技巧!!! Chat ...