Java常用API 之 java.util.Collections类(附解析和示例)_14

ynn-util-collections:Java集合API增强工具库实战指南 本文还有配套的精品资源,点击获取 简介:ynn-util-collections是一个Java实用工具库,旨在扩展和增强标准的java.util集合框架,提供更丰富的功能和更高的效率。它包括了图形数据结构支持、SQL风格的集合查询和操作、扩展的集合接口与类、高级操作如映射、过滤和归约、迭代器增强、并发和多线程支持、性能优化、序列化和反序列化机制,以及实用工具方法。此外,它还... 阅读详情
public class Collections
extends Object

java.util.Collections类直接继承自Object类。

    Collections类由操作 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。如果为此类的方法所提供的 collection 或类对象为 null,则这些方法都将抛出 NullPointerException。

    Collections类中所含多态算法的文档通常包括对实现 的简短描述。应该将这类描述视为实现注意事项,而不是规范 的一部分。实现者应该可以随意使用其他算法替代,只要遵循规范本身即可。(例如,sort 使用的算法不一定是合并排序算法,但它必须是稳定的。)

静态方法

static <T> boolea

addAll(Collection<? super T> c, T... elements) 

将所有指定元素添加到指定 collection 中。此便捷方法的行为与 c.addAll(Arrays.asList(elements)) 的行为是相同的,但在大多数实现下,此方法运行起来可能要快得多。

static <T> Queue<T>

asLifoQueue(Deque<T> deque)

以后进先出 (Lifo(类似栈)) Queue 的形式返回某个 Deque 的视图。方法 add 被映射到 push,remove 被映射到 pop 等等。在希望使用某一方法获取一个 Queue 并且需要它具有 Lifo 顺序时,此方法很有用。

static <T> int

binarySearch(List<? extends Comparable<? super T>> list, T key) 

--------------------------

static <T> int 

binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 类似

使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据指定的比较器对列表进行升序排序(通过 sort(List, Comparator) 方法)。如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。

此方法对“随机访问”的列表运行 log(n) 次(它提供接近固定时间的位置访问)。如果指定列表没有实现 RandomAccess 接口并且是一个大型列表,则此方法将执行基于迭代器的二分搜索,执行 O(n) 次链接遍历和 O(log n) 次元素比较。

static <E> Collection<E>

checkedCollection(Collection<E> c, Class<E> type) 



返回指定 collection 的一个动态类型安全视图。试图插入一个错误类型的元素将导致立即抛出 ClassCastException。

Collection<String> c = new HashSet<String>();
可以暂时用下面的声明代替:
Collection<String> c = Collections.checkedCollection(new HashSet<String>(), String.class);

再次运行程序会造成它在将类型不正确的元素插入 collection 的地方失败,从而清楚地识别问题的来源。


static <T> void

copy(List<? super T> dest, List<? extends T> src) 

将所有元素从一个列表复制到另一个列表。执行此操作后,目标列表中每个已复制元素的索引将等同于源列表中该元素的索引。目标列表的长度至少必须等于源列表。如果目标列表更长一些,也不会影响目标列表中的其余元素。

static boolea

disjoint(Collection<?> c1, Collection<?> c2)

如果两个指定 collection 中没有相同的元素,则返回 true。
static<T> void
fill(List<? super T> list, T obj) 
使用指定元素替换指定列表中的所有元素。此方法以线性时间运行。

static int

frequency(Collection<?> c, Object o) 

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

static int

indexOfSubList(List<?> source, List<?> target) 

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

static int

lastIndexOfSubList(List<?> source, List<?> target)

返回指定源列表中最后一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。
static <T extends Object & Comparable<? super T>> 

T

max(Collection<? extends T> coll) 

---------------

min类似

根据元素的自然顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须实现 Comparable 接口。此方法在整个 collection 上进行迭代,所以它需要的时间与 collection 的大小成正比。

static <T> T

max(Collection<? extends T> coll, Comparator<? super T> comp)

------------------

min类似

根据指定比较器产生的顺序,返回给定 collection 的最大元素。

static <T> boolean

replaceAll(List<T> list, T oldVal, T newVal) 

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

static void

reverse(List<?> list) 

反转指定列表中元素的顺序。
此方法以线性时间运行。

static void

rotate(List<?> list, int distance) 

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

假设 list 包含 [t, a, n, k, s]。在调用 Collections.rotate(list, 1)(或 Collections.rotate(list, -4))之后,list 将包含 [s, t, a, n, k]。

此方法用于子列表时非常有用,可以在保留其余元素顺序的同时,在列表中移动一个或多个元素。

假设 list 包含 [a, b, c, d, e]。要将索引 1 处的元素(b)向前移动两个位置,请执行以下调用:
Collections.rotate(l.subList(1, 4), -1),得到的列表是 [a, c, d, b, e]。

static void

shuffle(List<?> list) 

使用默认随机源对指定列表进行置换。所有置换发生的可能性都是大致相等的。

此方法以线性时间运行。如果指定列表没有实现 RandomAccess 接口并且是一个大型列表,则此实现在改组列表前将指定列表转储到数组中,并将改组后的数组转储回列表中。这避免了二次行为,该行为是原地改组一个“有序访问”列表引起的。

static <T extends Comparable<? super T>> void

sort(List<T> list) 

----------

static <T> void

sort(List<T> list, Comparator<? super T> c) 类似

 根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。

此排序方法具有稳定性:不会因调用 sort 方法而对相等的元素进行重新排序。
指定列表必须是可修改的,但不必是大小可调整的。
该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。 此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置处每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。

static void

swap(List<?> list, int i, int j) 

在指定列表的指定位置处交换元素。

static <T> Collection<T>

synchronizedCollection(Collection<T> c) 

返回指定 collection 支持的同步(线程安全的)collection。为了保证按顺序访问,必须通过返回的 collection 完成所有对底层实现 collection 的访问。
在返回的 collection 上进行迭代时,用户必须手工在返回的 collection 上进行同步:
  Collection c = Collections.synchronizedCollection(myCollection);
     ...
  synchronized(c) {
      Iterator i = c.iterator(); // Must be in the synchronized block
      while (i.hasNext())
         foo(i.next());
  }

static <T> Collection<T>

unmodifiableCollection(Collection<? extends T> c) 

返回指定 collection 的不可修改视图。此方法允许模块为用户提供对内部 collection 的“只读”访问。在返回的 collection 上执行的查询操作将“读完”指定的 collection。试图修改返回的 collection(不管是直接修改还是通过其迭代器进行修改)将导致抛出 UnsupportedOperationException。

FineReport 动态列切换统计维度 目标: 自己选择统计维度进行数据的汇总统计数据集参数实现动态列。 阅读详情

相关推荐

过压保护电路(OVP)

作者:AirCity 2020.2.4 Aircity007@sina.com 本文所有权归作者Aircity所有 1 示例一 当VBUS=5V时,各点电压电流如图所示,Q1接近截止,输出信号是5V。 当VBUS=5.4V开始,输出信号开始下降,直到VBUS=6.1V,输出信号降低为0.6V。 下面是实测波形,这个电路,输出信号的电压不会超过5.4V,这个输出信号可用于电源的控制信号。 2 ...

AirCity123的博客 3万+

Java的java.util.Collections用法

emptyMap类的无参构造方法会返回一个size=0的空Map,专门用于构造空Map。emptyMap类,与普通的HshMap等都继承自AbstractMap。而普通的new HashMap()等,也可以构造空Map。

技术开发爱好者的成长之路 466

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

java.util.Collections 集合工具类

java.util.Collection 集合接口 java.util.Collections 集合工具类,方便集合的操作 注意:对List集合中的元素排序,需要保证List集合中的元素实现了:Comparable接口 对set集合如何排序呢? 将set集合转换成List集合 package Mapiiiiii; import java.util.*; /* java.util.Collection 集合接口 java.util.Collections 集合工具类,方便集合的操作 */ public c

qq_57935389的博客 1456

工程师必看:如何用定时截尾试验快速验证产品MTBF(附真实案例解析)

本文为硬件工程师详细解析了如何运用定时截尾试验快速验证产品MTBF(平均无故障工作时间)。通过七步实战法,结合工业物联网网关的真实案例,阐述了从参数设定、试验执行到结果判读的完整流程,并提供了MATLAB脚本实现自动化计算与可视化,帮助工程师在有限时间内科学评估产品可靠性。

weixin_29243063的博客 494

(入门向)在Ubuntu22.04.3安装Matlab2021b,以及无法安装在当前目录下的解决办法(见最后)

还有这个/usr/local是只读状态,我试过sudo chmod..去改那个文件的读,结果还是安装不了,我不是这个默认路径,因为它文件夹还是只读,于是我在matlab2021b下创了一个bin,并选上。输入完成后,依次按y,因为里面有三个文件,他会让你确定3次密码,直接yyy跳过即可。你可能会遇到装不下的情况,这个软件占30g,可是你分配给虚拟机就剩10g。,于是我去Downloads下建了一个matlab2021b文件夹,果然好使,3).此时,会提示你输入密码,因为这个rar是有密码的,

harrype的博客 7286

java.util包之java.util.Collection介绍

是 Java 集合框架(Java Collections Framework, JCF)的。它代表一组对象(元素),并提供了一系列方法来操作这些元素。,定义了所有集合类(如。

qq_39460057的博客 914

LiveBOS UploadFile.do 任意文件上传漏洞复现(XVE-2023-21708)

LiveBOS UploadFile.do 接口存在任意文件上传漏洞,未经身份验证的攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。

0xSec 2421

Java Collections工具类详解

功能全面:覆盖集合操作的各个方面线程安全:提供同步包装方法不可变支持:方便创建安全共享的集合算法优化:内置高效排序和查找实现需要线程安全时使用共享集合时优先使用不可变集合大数据集排序考虑使用并行流频繁修改的集合避免使用Java 17 Collections文档。

weixin_52242569的博客 1126

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是MobileNetV1,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者。

Snu77的博客 3966

Open3d (C++) RANSAC拟合圆柱(详细过程版)

实现了一种基于RANSAC算法的圆柱拟合方法。

点云侠的博客 239

Java 的 Collections 类

Collections 类提供了许多静态方法来操作集合(Collections)。这些方法使得对集合进行排序、搜索、反转、填充等常见操作变得更加简单和方便。

Go_ahead_forever的博客 274

道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价

SAP HANA 之引入,使 ABAP 于处理大数据,云计算等新兴领域,展现新的生命力,如老吾老以及人之老,幼吾幼以及人之幼,扩展其在信息技术领域的应用,以涵养更广之需。ABAP 能以数据为基,流转于系统之中,如道法自然,顺应企业之生态,助之以高效运转,减少冗杂,简化管理,使企之运营,如小国寡民,无为而治。然 ABAP 如老树盘根,更替不易,面对新兴技术,如云计算、大数据等,其更新之速,未能与时俱进。如水之于渊,柔而能胜刚,ABAP 之发展,顺时而动,应需而变,其在编程领域,犹如道之于万物,渐不可或缺矣。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1024

java.util.Collections中常用api

返回集合中的最大/最小值(自然顺序或通过。随机打乱列表顺序(常用于洗牌算法)。返回单元素或空集合(不可变)。进行自然顺序排序(元素需实现。二分查找(列表必须已排序)。是一个工具类,提供了大量。用指定对象填充所有元素。检查两个集合是否无交集。用于操作或返回集合(如。返回不可变集合视图(如。批量添加元素到集合。

huing的博客 705

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java.util详细讲解和应用

java.util详解和应用

qqrrjj2011的博客 2659

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java.util的Collections类的两种sort方法使用

在java.util中有Collections类,包含可以操作或返回集合的专用静态类,其中有两类sort方法; 注意:java.util.Arrays中也有用于数组比较的多种sort类 1、第一类sort的API解释: public static Comparable> void sort(List list) 根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必

u011140430的专栏 1483

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java中enumeration_Java Collections enumeration()用法及代码示例

java.util.Collections类的enumeration()方法用于返回指定集合上的枚举。这提供了与需要枚举作为输入的旧式API的互操作性。用法:public static Enumeration enumeration(Collection c)参数:此方法将集合c作为要返回其枚举的参数。返回值:此方法返回指定集合的​​枚举。以下示例说明了enumeration()方法示例1://...

weixin_33946659的博客 463

Java 常用工具包 java.util

本文介绍了Java开发中最常用的java.util工具包核心组件,包括:List(有序数据存储)、Set(元素去重)、Map(键值对存储)三大集合框架,以及Collections/Arrays集合工具类。重点讲解了Optional处理空值、Stream流式数据处理、Objects安全判空比较等实用工具,并提及UUID生成唯一标识的用法。这些工具覆盖了Java日常开发中80%的集合操作和数据处理场景,开发者应重点理解其应用场景而非死记API。

qq_65800683的博客 757

Java:Collections的使用

java集合的核心接口及其实现类的简单使用,Collections工具类使用介绍

xike1024的博客 605

Mem Reduct 内存监控工具快速切换中文界面的完整设置指南

打开 Mem Reduct 的设置窗口,满屏都是英文:Language、Always on Top、Reduct Mask……想找"哪里能切语言",得先在菜单里扒拉半天。这篇文章就干一件事:把 Mem Reduct 的界面设置成中文,单台机器三步搞定;要是你手里管着一堆办公电脑,也给你留了配置文件和脚本两条批量路子。 ## 主界面语言下拉菜单,一步切中文 这是最省事的路线,适合"看完就去点"的

gitblog_00771的博客 763

java API中常用方法

java.util.Objects类    since 1.7 public static <T> T requireNonNull(T obj) //此方法设计用来在方法或构造方法中验证参数引用是否为空,为空,抛出NullPointerException,不为空,返回参数objpublic static boolean isNull(Object obj)//since 1.8 //obj为

冬木 3097

java.util.Collections.unmodifiableMap()方法实例

unmodifiableMap() 方法用于返回指定映射的不可修改视图。 声明 以下是java.util.Collections.unmodifiableMap()方法的声明。 public static K,V> MapK,V> unmodifiableMap(Map extends K,? extends V> m) 参数 m--这是一个不可修改视图是要返回的映射。 返

程序员孙大喵丶的博客 4512

java.util.Collections.max() 方法

描述 max(Collection<? extends T>)方法用来返回与给定集合的最大元素,根据其元素的自然顺序。 宣言 以下是java.util.Collections.max()方法的声明。 public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) 参数 coll- 要确定其最大元素的集合。 返回..

allway2的博客 3706

java中集合API

**电影对象类型*/ class Film {Film f1 = new Film("马尔扎哈" , 90);Film f2 = new Film("阿斯特拉" , 87);Film f3 = new Film("魔童哪吒" , 93);} });/**电影对象类型*/ class Film {Film f1 = new Film("马尔扎哈" , 90);

qq_52619275的博客 1070

Java-util包

本文主要介绍一下java.util包下的主要接口和类,因为在面试的时候被问到了,一下子问蒙了,常用的IDEA会自己加载,然就被面试官说基础不行,没有了下音,可能会做一个系列来介绍一下java、javax、org下所有包,以及包内的接口和类。

旭小爷的博客 897

Java中Collections常用的API

java.util.Collections:是集合工具类。作用:Collections不是集合,而是集合的工具类。

ltt159264的博客 637
上一篇: 剑指Offer_重建二叉树_04
下一篇: 剑指Offer_两个栈来实现队列_05
coder__666
博客等级 码龄9年 42粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值