对集合中的元素进行排序

Collections中的sort方法使用

public class ListDemo {public static void main(String[] args) {List<String> lis = new ArrayList();lis.add("asd");lis.add("bvc");lis.add("adv");lis.add("sasd");lis.add("aaas");// 排序前System.out.println(lis);// [asd, bvc, adv, sasd, aaas]// 排序后Collections.sort(lis);System.out.println(lis);// [aaas, adv, asd, bvc, sasd]//按照自定议的方式进行排序Collections.sort(lis,new StringLengthSort());System.out.println(lis);//[adv, asd, bvc, aaas, sasd]}}// 定义一个按照字符串的长度比较器类
class StringLengthSort implements Comparator<String> {@Overridepublic int compare(String s1, String s2) {//先根据字符串的长度进行排序if (s1.length() > s2.length())return 1;if (s1.length() < s2.length())return -1;//如果长度相同,再根据内容进行排序return s1.compareTo(s2);}
}

找出集合元素中的最大值

Collections中的求集合元素的最大值

public class ListDemo {public static void main(String[] args) {List<String> lis = new ArrayList();lis.add("asd");lis.add("bvc");lis.add("adv");lis.add("sasd");lis.add("aaas");// 对集合元素取最大值操作String max = Collections.max(lis);// 输出最大值System.out.println(max);// sasdList<Integer> list = new ArrayList();list.add(245);list.add(33);list.add(785);list.add(524);list.add(2);// 对集合元素取最大值操作int max1 = Collections.max(list);// 输出最大值System.out.println(max1);// 785<pre name="code" class="java">}

查找集合中相关元素对应的角标

public class ListDemo {public static void main(String[] args) {List<String> lis = new ArrayList();lis.add("asd");lis.add("bvc");lis.add("adv");lis.add("sasd");lis.add("aaas");//需要调用sort方法进行集合排序int index = Collections.binarySearch(lis, "sasd");System.out.println("sasd 的角标是:"+index);//sasd 的角标是:3
}
}

详细说明:

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

使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过sort(List) 方法)。如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个,

参数:
list - 要搜索的列表。
key - 要搜索的键。
返回:
如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1)插入点 被定义为将键插入列表的那一点:即第一个大于此键的元素索引;如果列表中的所有元素都小于指定的键,则为list.size()。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。
抛出:
ClassCastException - 如果列表中包含不可相互比较 的元素(例如,字符串和整数),或者搜索键无法与列表的元素进行相互比较。

使用自定义二分法查找

// 定义一个二分法查找方法public static int dichotomyLookUpIndex(List<String> list, String key) {int min = 0;// 记录最小值角标,默认为集合的开始位置int mid; // 记录中间值位置int max = list.size();;// 记录最大值位置while (min <= max) {// 得出中间值位置 keymid = (min + max) / 2;// 根据key来获取集合中对应的值String str = list.get(mid);// 进行比较int num = str.compareTo(key);// 按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。// 按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。// 如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。// 如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0if (num > 0) {max = mid - 1;} else if (num < 0) {min = mid + 1;} else {return mid;}}return -min - 1;}
}

替换集合中元素的操作

public class ListDemo {public static void main(String[] args) {List<String> lis = new ArrayList();lis.add("asd");lis.add("bvc");lis.add("adv");lis.add("sasd");lis.add("aaas");System.out.println("原集合数据:"+lis);//原集合数据:[asd, bvc, adv, sasd, aaas]//替换指定元素内容              Collections.replaceAll(lis, "asd", "55555");System.out.println("替换后集合数据:"+lis);//替换后集合数据:[55555, bvc, adv, sasd, aaas]//将集合中的所有的元素进行替换 Collections.fill(lis, "0000");System.out.println("替换后集合数据:"+lis);//替换后集合数据:[0000, 0000, 0000, 0000, 0000]}
}



将集合中的元素反转操作

public class ListDemo {public static void main(String[] args) {List<String> lis = new ArrayList();lis.add("asd");lis.add("bvc");lis.add("adv");lis.add("sasd");lis.add("aaas");System.out.println("原集合数据:" + lis);// 原集合数据:[asd, bvc, adv, sasd, aaas]// 排序后Collections.sort(lis);System.out.println(lis);// [aaas, adv, asd, bvc, sasd]// 反转操作后Collections.reverse(lis);System.out.println(lis);// [sasd, bvc, asd, adv, aaas]}
}

对指定的列表进行置换

public static void main(String[] args) {List<String> lis = new ArrayList();lis.add("asd");lis.add("bvc");lis.add("adv");lis.add("sasd");lis.add("aaas");System.out.println("原集合数据:" + lis);// 原集合数据:[asd, bvc, adv, sasd, aaas]//使用指定的随机源对指定列表进行置换。所有置换发生的可能性都是相等的,假定随机源是公平的。//每次运行的结果都不一样Collections.shuffle(lis, new Random());System.out.println("Random集合数据:" + lis);//Random集合数据:[adv, aaas, sasd, bvc, asd]
}
}

交换集合中元素的位置

public static void main(String[] args) {List<String> lis = new ArrayList();lis.add("asd");lis.add("bvc");lis.add("adv");lis.add("sasd");lis.add("aaas");System.out.println("原集合数据:" + lis);// 原集合数据:[asd, bvc, adv, sasd, aaas]//在指定列表的指定位置处交换元素。Collections.swap(lis, 0, 1);System.out.println("交换后的集合数据:" + lis);//交换后的集合数据:[bvc, asd, adv, sasd, aaas]<pre name="code" class="java">}
}



java基础集合操作工具类Collections简述(java集合四)相关推荐

  1. Java基础——Day18——泛型,collections,set,map

    Day 18 一.泛型(掌握) 参数化数据类型 创建类的时候无法确定属性的数据类型,创建对象的时候根据实际需求确定数据类型 package com.qf.test;import java.util.A ...

  2. Java基础 ----常用时间类

    Java基础 ----常用时间类 java.util.Date java.util.Calendar java.text.SimpleDateFormat new Date().getTime() & ...

  3. Java基础:String类

    相关阅读 Java基础:String类 Java字符串格式化 Java基础:正则表达式 1. 概述 字符串是由多个字符组成的一串数据(字符序列),字符串可以看成是字符数组. 在实际开发中,字符串的操作 ...

  4. 多重继承_Python 和 Java 基础对比 10 —— 类的封装、继承和多态

    @Python大星 一.Python 类的封装.继承和多态 封装 继承 Python 支持多父类的继承机制,所以需要注意圆括号中基类的顺序,若是基类中有相同的方法名,并且在子类使用时未指定,Pytho ...

  5. 一文带你深入理解【Java基础】· 枚举类

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  6. 【狂神说笔记—— Java基础07-常用类】

    Java基础07-常用类 Object类 大家都知道Object是所有类的父类,任何类都默认继承Object. 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类 ...

  7. Java基础复习-常用类

    Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...

  8. Java基础语法(一)——初识Java

    文章目录 一.Java语言概述 1.Java是什么 2.Java 的流行性 3.Java 的特性 (1) 简单性 (2)面向对象 (3) 分布式(微服务) (4) 健壮性 (5) 安全性 (6) 可移 ...

  9. java 图片image工具类,ImageUtil.java

    1.java 图片image工具类,ImageUtil.java package com.broadway.numpeople.utils;import java.awt.Color; import ...

最新文章

  1. 精通有状态vs无状态(Stateful vs Stateless)一
  2. SVM学习(三):线性分类器的求解
  3. @ResponseBody导致的返回值中文乱码
  4. Linux 系统应用编程——出错处理(errno)
  5. [算法题] Search in Rotated Sorted Array
  6. 接口测试用例设计思路_基于python语言的接口自动化demo小实战
  7. Python报错: RuntimeError: The current Numpy installation (‘D:\\Develop\\anaconda\\lib\\site-packages\\
  8. qt实现无边框窗体的拉伸和拖动(附原理)
  9. stm32呼吸灯c语言程序,基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)
  10. 递归算法php,php递归算法经典实例
  11. nssa和stub_eNSP环境,分析NSSA区域与Stub区域的区别
  12. vue 集成环信 web im 加 一对一视频通话
  13. 【测开方法论】测开平台pk心得-抉择
  14. shader02-仿星空粒子
  15. HDU 6143 Killer Names(容斥+组合)
  16. 网站突然服务器到期,网站云服务器到期释放
  17. matlab命令批量重命名,MATLAB中预定义对话框之文件打开对话框以及如何批量重命名...
  18. 期刊论文发表怎么投稿
  19. 原创|Android Jetpack Compose 最全上手指南
  20. AI-DPL, you should know

热门文章

  1. linux xchgl 汇编含义,替换x86 xchgl 汇编指令
  2. linux系统挂载磁盘慢,arch开机速度竟然是挂载磁盘拖慢了。。
  3. java 父类this_java父类方法中使用this,可以把this强转为子类对象,然后调用子类的实例方法,怎么解释?...
  4. 最新成果!超越AlphaZero!DeepMind让AI制霸「元宇宙」
  5. 卷积神经网络CNN是靠什么线索学习到深度信息的?
  6. 怎样才能在自动驾驶任务中高效地利用时间轴上的信息进行视频检测?
  7. 深度学习(五十九)mxnet移植至android
  8. Matlab线性/非线性规划优化算法(5)
  9. android复位机器人图片_Universal-Image-Loader 图片异步加载类库还不熟?
  10. android alarmmanager定时任务,AlarmManager 实现定时任务