集合工具类:collections
2023-09-14 08:58:42 时间
collection与collections的关系?
public class Collectionsextends Object
collection与collections没有直接的关系,但是与集合的各个接口都有操作的方法支持。
1,验证空集合的操作。
static <T> List<T> emptyList() 返回空的列表(不可变的)。
代码:
package 类集; import java.util.Collections; import java.util.List; import java.util.Set; public class test1{ public static void main(String args[]){ List<String> allList = Collections.emptyList() ; // 返回空的 List集合 Set<String> allSet = Collections.emptySet() ; // 返回空的 List集合 allList.add("Hello") ; // 加入数据 } };
操作结果:
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at 类集.test1.main(test1.java:9)
发现此时添加不了数据。
collections提供了专门的 添加操作。
static <T> boolean addAll (Collection<? super T> c, T... elements) 将所有指定元素添加到指定 collection 中。
使用了可变数量的参数,可以输入各种类型的数据。
package 类集; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; Collections.addAll(all,"MLDN","LXH","mldnjava") ; //给 ALL 加入各种类型数据 Iterator<String> iter = all.iterator() ; while(iter.hasNext()){ System.out.print(iter.next() + "、") ; } } };
输出结果:
MLDN、LXH、mldnjava、
反转操作:
static void reverse(List<?> list) 反转指定列表中元素的顺序。
代码:
package 类集; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; Collections.reverse(all) ; // 内容反转 Iterator<String> iter = all.iterator() ; while(iter.hasNext()){ System.out.print(iter.next() + "、") ; } } };
二分检索操作
static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 使用二分搜索法搜索指定列表,以获得指定对象。
返回的结果是位置信息。
代码:
package 类集; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; int point = Collections.binarySearch(all,"LXH") ; // 检索数据 System.out.println("检索结果:" + point) ; } };
结果:
检索结果:1
替换内容操作
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) 使用另一个值替换列表中出现的所有某一指定值。
返回结果是bool类型,所以可以用在if判断语句中来判断是否替换成功。
代码:
package 类集; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; if(Collections.replaceAll(all,"LXH","李兴华")){// 替换内容 System.out.println("内容替换成功!") ; } System.out.print("替换之后的结果:") ; System.out.print(all) ; } };
操作结果:
内容替换成功!
替换之后的结果:[MLDN, 李兴华, mldnjava]
内容排序操作
static <T extends Comparable<? super T>> void sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序。
代码:
package 类集; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"1、MLDN","3、mldnjava","2、LXH") ; Collections.addAll(all,"B、www.mldn.cn") ; Collections.addAll(all,"A、www.mldnjava.cn") ; System.out.println("排序之前的集合:" + all) ; Collections.sort(all) ; System.out.println("排序之后的集合:" + all) ; } };
返回结果:
排序之前的集合:[1、MLDN, 3、mldnjava, 2、LXH, B、www.mldn.cn, A、www.mldnjava.cn]
排序之后的集合:[1、MLDN, 2、LXH, 3、mldnjava, A、www.mldnjava.cn, B、www.mldn.cn]
内容交换操作:
static void swap(List<?> list, int i, int j) 在指定列表的指定位置处交换元素。
根据交换的内容的位置进行交换。
代码:
package 类集; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class test1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"1、MLDN","2、LXH","3、mldnjava") ; System.out.println("交换之前的集合:" + all) ; Collections.swap(all,0,2) ; System.out.println("交换之后的集合:" + all) ; } };
结果:
交换之前的集合:[1、MLDN, 2、LXH, 3、mldnjava]
交换之后的集合:[3、mldnjava, 2、LXH, 1、MLDN]
总结:
为了方便类集的操作,提供了collections类。与collection没有直接关系。
只是对所有的集合接口有所支持而已。
相关文章
- 前端进阶(8) - 前端开发需要了解的工具集合:webpack, eslint, prettier, ...
- 开源工具DbUtils的使用(数据库的增删改查)
- quicker一款效率提升工具
- 10g 及之后导出/导入工具
- UCloner 是一个针对 Ubuntu Linux 编写的系统备份、恢复、克隆工具
- [工具类]DataTable与泛型集合List互转
- Flink(63):Flink中通用RedisUtil工具类
- 【课件】K8S集群备份和还原解决方案相关备份还原工具推荐
- windows下使用tree工具打印目录树
- 如何使用SAP CRM增强工具AET创建Table表格类型的增强
- 音频文件转码工具文档 目录 1. 音频文件转码1 1.1. 简介1 1.2. 转换命令示例2 1.3. wav 文件转 16k 16bits 位深的单声道pcm文件2 1.4. mp3 文件转
- Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap
- Express 工具库中的 Application 对象
- 【Android 逆向】Android 逆向通用工具开发 ( PC 端工具 hacktool 启动 main 函数分析 | hacktool 工程中的核心类 HackCommand 分析 )
- 【云原生 • Kubernetes】命令行工具 kubectl 介绍及命令汇总