java中Collections类的常见操作
来源:互联网 发布:值得下载的app 知乎 编辑:程序博客网 时间:2024/06/02 02:57
注意:
1、Collection是一个接口,而Collections是一个类
2、Collections的排序有两种,一种排序是直接调用了 “集合中” 数据类型的compareTo方法,且此类中必须 实现Compareble接口,并重写了compareTo
另一种是调用 了外部的比较器,这个外部的比较器其实就是一个单独的类,这个类要实现Comparetor接口,并重写compareTo
3、虽然两者都重写了compareTo方法,但它们的接口是不一样,这点一定要注意
**********************************************测试实体类**********************************************package com**.CollectionDemo;import java.util.Date;/** * @author Ckinghan * @描述:测试实体类 */public class ParamsTable { private Integer id; private String paramsName; private String paramsVal; private Date createDate; public ParamsTable() { super(); } public ParamsTable(Integer id, String paramsName, String paramsVal, Date createDate) { super(); this.id = id; this.paramsName = paramsName; this.paramsVal = paramsVal; this.createDate = createDate; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getParamsName() { return paramsName; } public void setParamsName(String paramsName) { this.paramsName = paramsName; } public String getParamsVal() { return paramsVal; } public void setParamsVal(String paramsVal) { this.paramsVal = paramsVal; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } @Override public String toString() { return "ParamsTable [id=" + id + ", paramsName=" + paramsName + ", paramsVal=" + paramsVal + ", createDate=" + createDate + "]"; }}**********************************************外部比较器**********************************************package com**.CollectionDemo;import java.util.Comparator;/** * @author Ckinghan * @描述:params的外部比较器 * @注意: 这里实现的是Comparator接口,而不是在实体上实现的Compareble接口 * 这里将Comparator的参数类型固定死了为ParamsTable * 用于测试Collections类的sort排序(sort的排序分两种方法,这里说的是须要比较器的方法) */public class ParamsComparator implements Comparator<ParamsTable>{ /** * @描述:自定义的比较器 * @param params1 要比较的参数 * @param params2 要比较的参数 * @return 返回数字,0代码 params1 等于 params2, * 1代表params1大于params2, * 负数代表params1 小于params2 * @创建时间:2017年5月10日11:37:31 */ @Override public int compare(ParamsTable params1, ParamsTable params2) { int val = params1.getId() - params2.getId(); if(val== 0 && params1.getParamsName() != null){ val = params1.getParamsName().compareTo(params2.getParamsName()); if(val == 0){ val = params1.getCreateDate().compareTo(params2.getCreateDate()); } } return val; }}**********************************************测试类**********************************************package com**.CollectionDemo;import java.util.ArrayList;import java.util.Collections;import java.util.Date;import java.util.List;import java.util.Random;/** * @author Ckinghan * @描述:测试Collections集合类的方法 */public class CollectionsDemo { public static void main(String[] args) { /** * 注意:Collection是接口,而Collections是集合的工具类,两者是不一样的。 */ /** * 创建一个arrayList集合,并随机赋值 */ List<Integer> integers = new ArrayList<Integer>(); Random random = new Random(); for(int i = 0; i < 7; i ++){ integers.add(random.nextInt(1000)); } System.out.println("创建的集合的值为:"+integers); /** *使用Collections.sort进行排序(注意,系统提供的类大都已经实现了compareble接口,所以可以直接进行排序) */ Collections.sort(integers); System.out.println("使用Collections.sort方法排序后的结果为:"+integers); /** * 使用Collections.reverse将已经的数据顺序倒过来 */ Collections.reverse(integers); System.out.println("使用Collections.reverse将已经的数据顺序倒过来的结果为:"+integers); /** * Collections.shuffle 可以打乱已有的集合顺序 */ Collections.shuffle(integers); System.out.println("使用Collections.shuffle方法随机分配顺序后的结果为:"+integers); /** * 使用Collections.max获取集合中的最大值 */ int maxVal = Collections.max(integers); System.out.println("使用Collections.max获取集合中的最大值的结果为:"+maxVal); /** * 使用Collections.synchronizedCollection将integers变为同步线程的数据 * 相当于加了一把锁,可防止多个线程同时对integers进行操作 */ Collections.synchronizedCollection(integers); /** * 最后说一个使用外部比较器排序的功能 * Collection.sort(List<T> list, Comparator<? super T> c)方法 */ List<ParamsTable> paramsTables= new ArrayList<>(); paramsTables.add(new ParamsTable(1, "table", "Emp", new Date())); paramsTables.add(new ParamsTable(2, "prefix", "Table", new Date())); paramsTables.add(new ParamsTable(1, "suffix", "T", new Date())); paramsTables.add(new ParamsTable(1, "val", "Emp", new Date())); paramsTables.add(new ParamsTable(5, "groud", "Emp", new Date())); //使用外部比较器排序 Collections.sort(paramsTables, new ParamsComparator()); //打印排序后的数据 for(ParamsTable paramsTable : paramsTables){ System.out.println(paramsTable); } /** * 其它Collections还有很多方法,有兴趣可以查询API */ }}*********************************************执行结果*********************************************创建的集合的值为:[28, 24, 360, 726, 250, 759, 545]使用Collections.sort方法排序后的结果为:[24, 28, 250, 360, 545, 726, 759]使用Collections.reverse将已经的数据顺序倒过来的结果为:[759, 726, 545, 360, 250, 28, 24]使用Collections.shuffle方法随机分配顺序后的结果为:[726, 28, 360, 24, 250, 759, 545]使用Collections.max获取集合中的最大值的结果为:759ParamsTable [id=1, paramsName=suffix, paramsVal=T, createDate=Wed May 10 12:41:55 CST 2017]ParamsTable [id=1, paramsName=table, paramsVal=Emp, createDate=Wed May 10 12:41:55 CST 2017]ParamsTable [id=1, paramsName=val, paramsVal=Emp, createDate=Wed May 10 12:41:55 CST 2017]ParamsTable [id=2, paramsName=prefix, paramsVal=Table, createDate=Wed May 10 12:41:55 CST 2017]ParamsTable [id=5, paramsName=groud, paramsVal=Emp, createDate=Wed May 10 12:41:55 CST 2017]
0 0
- java中Collections类的常见操作
- java.util.Collections 类的常见用法
- Java 操作集合的工具类:Collections
- JAVA中String类的常见操作
- java-Collections类中shuffle的用法
- java 中 Collections 的用法
- 1006--Java集合--操作集合的工具类:Collections
- 类 Collections集合的操作
- java中常见的文件操作
- JAVA中常见的违规操作
- java中数组的常见操作
- java中Collection与Collections的区别 Collections.sort
- JAVA的Collections类中shuffle的用法
- JAVA的Collections类中shuffle的用法
- JAVA的Collections类中shuffle的用法
- JAVA的Collections类中shuffle的用法
- JAVA的Collections类中shuffle的用法
- JAVA的Collections类中shuffle的用法
- Linux下onvif的编译
- L1-007. 念数字
- Linux下openssl的编译
- 解决Spring MVC 中文乱码 问题
- 推导相机变换矩阵
- java中Collections类的常见操作
- Linux下live555的编译
- [图解数据结构之Java实现](0) --- 概要分析和目录分类
- 2017GDCPC总结 by+2
- IE环境下判断IE版本的语句...[if lte IE 6]……[endif][if lte IE 7]……[endif]
- 【DOM】(1)通过document获取页面节点的三个属性(nodeName、nodeType、nodeValue)
- 打包发布-静态库和动态库
- 题解:周期串(UVa 455)
- phpstrom terminal窗口更改字体