java.util.Collections 空集合
Collections.EMPTY_LIST,Collections.emptyList()——返回只读
的空LIST 集合
Collections.EMPTY_MAP,Collections.emptyMap()——返回只读
的空MAP集合
Collections.EMPTY_SET,Collections.emptySet()返回只读
的空SET集合
所谓的空集合指的是没有元素在这些集合中,特别需要主要的是返回的集合都是只读的。以下代码会抛出UnsupportedOperationException异常。
-------------------------------------------------------
Public static void main(String[] args) {
List children = Collections.EMPTY_LIST;
children.add(new HashMap());
}
-------------------------------------------------------
Collections.emptyList(),Collections.emptySet(),Collections.emptyMap()由于支持泛型使用起来会更方便,例如
--------------------------------------------------------------
List<String> s = Collections.emptyList();
---------------------------------------------------------------
单元素集合
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
———————————————————————————————————————
public void demonstrateEnumerationToList()
{
log("===== Demonstrate Collections.list(Enumeration) =====", System.out);
final Enumeration properties = System.getProperties().propertyNames();
final List propertiesList = Collections.list(properties);
log(propertiesList.toString(), System.out);
}
————————————————————————————————————————
enumeration(Collection<T> c) 方法用于基于Collection返回Enumeration。
——————————————————————————————————————
public void demonstrateCollectionToEnumeration()
{
log("===== Demonstrate Collections.enumeration(Collection) =====", System.out);
final Enumeration books = Collections.enumeration(this.favoriteBooks);
while (books.hasMoreElements())
{
log(books.nextElement().toString(), System.out);
}
————————————————————————————————————————————
}
查找替换
fill——使用指定元素替换指定列表中的所有元素。
frequency——返回指定 collection 中等于指定对象的元素数。
indexOfSubList—— 返回指定源列表中第一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回 -1。
lastIndexOfSubList——返回指定源列表中最后一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回-1。
max—— 根据元素的自然顺序,返回给定 collection 的最大元素。
min——根据元素的自然顺序 返回给定 collection 的最小元素。
replaceAll——使用另一个值替换列表中出现的所有某一指定值。
集合排序
Collections还提供了集中对集合进行排序的方法。
reverse——对List中的元素倒序排列
shuffle——对List中的元素随即排列,这个方法让我想到了Apple的iPod Shuffle
sort——对List中的元素排序
swap——交换List中某两个指定下标位元素在集合中的位置。
rotate——循环移动。循环移动这个方法让人比较难以理解,下面的例子就会让你一下子就理解这个方法的含义。
——————————————————————————————————————————————————————————————————————
假设 list
包含 [t, a, n, k, s]
。在调用 Collections.rotate(list, 1)
(或 Collections.rotate(list, -4)
)之后,list
将包含 [s, t, a, n, k]
。
——————————————————————————————————————————————————————————————————————
其他方法
binarySearch——使用二进制搜索算法来搜索指定列表,以获得指定对象。
addAll——将所有指定元素添加到指定 collection 中。
copy——将所有元素从一个列表复制到另一个列表。
disjoint——如果两个指定 collection 中没有相同的元素,则返回 true。
nCopies——返回由指定对象的 n 个副本组成的不可变列表。
------------------------------------清晰记法
1. 描述:
1.1 概述
java.util.Collections类包含很多有用的方法,可以使程序员的工作变得更加容易,但是这些方法通常都没有被充分地利用。Javadoc给出Collections类最完整的描述
例子:
import java.util.ArrayList; public class CollectionsSort { } public static void main(String[] args) { |
2. 具体操作
1) 排序(Sort)
使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的
double array[] = {112, 111, 23, 456, 231 }; |
2) 混排(Shuffling)
混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的 Card 对象的一个 List .另外,在生成测试案例时,它也是十分有用的。
Collections.Shuffling(list) |
3) 反转(Reverse)
使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。
Collections.reverse(list) |
4) 替换所以的元素(Fill)
使用指定元素替换指定列表中的所有元素。
String str[] = {"dd","aa","bb","cc","ee"}; } |
5) 拷贝(Copy)
用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List 至少与源一样长。如果它更长,则在目标 List 中的剩余元素不受影响。
Collections.copy(list,li): 后面一个参数是目标列表 ,前一个是源列表
double array[] = {112, 111, 23, 456, 231 }; |
6) 返回Collections中最小元素(min)
根据指定比较器产生的顺序,返回给定 collection 的最小元素。collection 中的所有元素都必须是通过指定比较器可相互比较的
Collections.min(list) |
7) 返回Collections中最小元素(max)
根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的
Collections.max(list) |
8) lastIndexOfSubList
返回指定源列表中最后一次出现指定目标列表的起始位置
int count = Collections.lastIndexOfSubList(list,li); |
9) IndexOfSubList
返回指定源列表中第一次出现指定目标列表的起始位置
int count = Collections.indexOfSubList(list,li); |
10) Rotate
根据指定的距离循环移动指定列表中的元素
Collections.rotate(list,-1);
如果是负数,则正向移动,正数则方向移动
double array[] = {112, 111, 23, 456, 231 }; |
java.util.Collections 空集合相关推荐
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...
- java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 算法是数据结构的灵魂! 好的算法搭配上合适的数据结构,可以让代码功能大大的提升效率. ...
- Java中的Collections类– java.util.Collections
Collections class in java is a useful utility class to work with collections in java. The java.util. ...
- JDK源码解析之Java.util.Collections
java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一个工具类,服务于Java的Collection框架. 一.源码解析 1.不可实例 ...
- java.util.Collections类使用(很多秘密,网上资料亲测)
主要方法介绍: 对集合操作 主要方法: sort() 正排序 reverse()逆序 shuffle()打乱--->>>排扑克很有用. copy() 复制 max() 求集合最大值 ...
- java.util.Collections.synchronizedSet()方法的使用
下面的例子显示java.util.Collections.synchronizedSet()方法的使用 package com.;import java.util.*;public class Col ...
- java 使用 java.util.Collections.addAll( list, array ) 将数组转成 list
// java 使用 java.util.Collections 将数组转成 list List<String> list1 = new ArrayList<String>() ...
- java.util.Map——Map集合的常用方法
阿里云服务器优惠链接:云小站_专享特惠_云产品推荐-阿里云 开发中最常用的就是List集合和Map集合,Map集合是基于java核心类--java.util中的:Map集合用于储存元素对,Map储存的 ...
- 记录java.util.Collections.unmodifiableList()使用
一般情况下对于我们自定义的ava对象中private类型变量一般不提供set方法来保证数据不被修改,但是如果你的对象List成员只要你提供get方法后,就可以随意add.remove改变其结构,这样显 ...
最新文章
- Web GIS离线解决方案
- vscode 注释_VSCode最强助攻
- hdfs源码分析第一弹
- SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
- Jquery操作CSS常用方法
- Linux内核驱动GPIO的使用
- Oracle-数据实现竖排打印
- SQLServer 维护脚本分享(08)临时数据库(tempdb)
- 在linux中emacs安装package.el
- Java程序设计语言基础03:Java中的程序执行流程
- IDEA SpringBoot多模块项目搭建详细过程(转)
- 用Python爬虫爬取“女神吧”上的照片。
- 机器学习备忘录 | 二分类模型常用评价指标汇总
- 利用ArcGIS的计算几何批量计算线要素长度
- 华为设备配置LDP与IGP联动
- Dev-C++5.11游戏创作之躺平发育
- 备忘 Linux 快速分区
- 笔记本分屏后鼠标卡顿问题解决
- 云宏携手英特尔基于英特尔® 至强® 可扩展平台全面升级超融合一体机解决方案
- Mybatis (总结完整)
热门文章
- Java 利用POI操作PPT
- 普通人想要创业成功的捷径是什么?
- Field userClient in cn.itcast.order.service.OrderService required a bean of type ‘com.example.feign.
- eclipse远程调试jar包
- 梦幻西游服务器维护不完了,梦幻西游:周二维护的内容太多,周一公布时所有服务器都崩溃的...
- 千塔之城-金色布拉格
- HOWTO:通过 VBA 自定义 Office 助手
- jQuery(二):jQuery选择器
- 前端使用pako对数据进行压缩与解压
- 运行python脚本时,报错InsecurePlatformWarning: A true SSLContext object is not available,解决方法