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. DataPermissionInterceptor源码解读

    本文首发在我的博客:https://blog.liuzijian.com/post/mybatis-plus-source-data-permission-interceptor.html 一.概述 ...

  2. Dubbo 中的集群容错

    前言 在微服务架构中,服务间的依赖关系复杂且动态,任何一个服务的故障都可能引发连锁反应,导致系统雪崩.一个好的容错设计可以避免这些问题发生: 服务雪崩效应:单个服务崩溃或响应延迟可能导致调用链上的所有 ...

  3. X86-64位简易系统开发 - 从BIOS阶段开始

    最近回顾之前写的代码的时候, 发现了以前本科时还开发过一个64位的操作系统, 不过最终也只是开发到进程切换部分 这是一个涉及到汇编和C语言的一个偏底层偏硬核的项目, 而且为了能够学到更多东西, 使用的 ...

  4. kubernetes学习之CKA认证

    最近接触了很多kubernetes应用场景,学习了不少kubernetes的知识,所以想着官方认证一下CKA.不得不感叹:云时代真的来了. K8s的专业技术认证主要有以下几种: CKA(Kuberne ...

  5. quartz——Corn表达式

    摘录:quartz Cron表达式一分钟教程 - 简书 (jianshu.com) Quartz学习之Cron表达式详解_five-five的博客-CSDN博客_quartz cron表达式 每隔5秒 ...

  6. 一次小而美的重构:使用 C# 在 Avalonia 中生成真正好看的词云

    前言 我之前不是开发 StarBlogPublisher(一款 Markdown 文章发布工具)吗? 当时里面有个分类 词云(Word Cloud) 展示功能. 初版的词云虽然 "能用&qu ...

  7. HttpServletRequest相关

    简介 获取客户端请求头及参数 获取提交给服务器的中文数据 简介 这个对象封装了客户端提交过来的一切数据. 获取客户端请求头及参数 package com.zhujunwei.httpServletRe ...

  8. “Pocket Flow,一个仅用 100 行代码实现的 LLM 框架”

    PocketFlow介绍 PocketFlow是我最近在探索的一个LLM 框架,我觉得很有意思,因此推荐给大家. 这个框架最大的特点就是:"Pocket Flow,一个仅用 100 行代码实 ...

  9. vue3 基础-CompositionAPI - setup

    之前介绍的是一些关于代码复用的问题, 如 mixin, plugin 等. 从本篇开始呢, 就将来学习一波 vue3 的新特性, 即 Composition API 咱之前的写法, 即把各种逻辑, 方 ...

  10. Coze 初体验之打造专属的编程助手

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...