Conllections的常用方法

Collections的常用api

Collections是一个操作集合的工具类。 static void shuffle(List<?> list):对集合中的内容打乱顺序。

static void sort(List list):对集合中的元素进行排序(自然排序)

static void sort(List list, Comparator c):对集合中的内容进行排序,参数c表示比较器(比较器排序)

static boolean addAll(Collection c, T... elements):批量添加元素。 参数c:表示向哪个集合添加元素。 参数elements:表示要添加那些元素。 该参数是可变参数,可以向该参数位置传递任意个数据。

 

01自然排序

Collections中的sort方法 static void sort(List list):对集合中的元素进行排序(自然排序) 
注意: 使用上面这个sort方法排序的集合,里面的泛型必须要实现Comparable接口。 如果要进行排序,集合中的元素必须要具备比较的功能,如果类实现Comparable接口,
那么表示该类的对象就具备了比较的功能。
当使用sort方法进行排序(自然排序)时,内部会自动调用compareTo方法比较两个元素的大小。 
如果该方法的返回值是正数,表示调用者对象大于参数对象。 如果该方法的返回值是0,表示两个对象相等。
如果该方法的返回值是负数,表示调用者对象小于参数对象。 我们需要做的是在compareTo方法中编写排序的规则。
公式: 升序就是我(调用者)减他(参数) 要根据什么属性进行排序,就让什么相减。

 

代码示例

复制代码
 public class Person implements Comparable<Person>{
     private String name;
     private int age; 
     @Override
     public int compareTo(Person o) {
         //根据年龄进行升序排序。
         return this.getAge() - o.getAge();
     }
 }
复制代码

 

02 比较器排序

复制代码
 比较器排序方法:
     static void sort(List list, Comparator c):对集合中内容排序(比较器排序)。参数list是要排序的集合。参数c表示比较器。
 如果某个事物本身不具备比较的功能,那么我们就不能使用自然排序的方式对集合直接进行排序了。
 如果事物不具备不叫的功能,那么我们可以找一个法官(比较器)帮这些对象去比较,这样集合也可以进行排序。
 ​
 Comparator是一个接口,该接口表示比较器,如果要用需要使用实现类,这个实现类需要我们自己定义。
 ​
 步骤:
     1. 创建集合并添加元素
     2. 定义一个类,实现Comparator接口。
     3. 重写compare方法,并在该方法中定义比较的规则。
     4. 调用Collections的sort方法,传递集合和比较器进行排序。
 如果事物本身就具备比较的功能,那么我们可以直接使用sort方法进行排序,这种方式叫做自然排序。
 如果事物本身不具备比较的功能,那么我们可以找一个法官帮这些对象进行排序,这种方式叫做比较器排序。
复制代码

 

代码示例

 Collections.sort(list, new Rule());//比较器可用匿名内部类

 

复制代码
 /*
     Comparator表示比较器,Rule类实现了Comparator接口,Rule类也就表示比较器了
  */
 public class Rule implements Comparator<Student>{
     /*
         当调用Collections的sort方法进行比较器排序时,那么系统内部会自动调用compare方法比较两个对象的大小。
         如果该方法返回值是正数,说明第一个参数大于第二个参数。
         如果该方法的返回值是0,说明两个对象相等。
         如果该方法的返回值是负数,说明第一个参数小于第二个参数。
         排序公式:
             升序就是一减二
      */
     @Override
     public int compare(Student o1, Student o2) {
         //根据年龄升序排序
         return o1.getAge() - o2.getAge();
     }
 }
复制代码

 

03 可变参数

复制代码
 JDK5的时候,多了一个新的特性叫做可变参数。
 如果一个方法的参数是可变参数,那么可以在该参数位置传递任意个数据。
 ​
 可变参数格式:
     修饰符 返回值类型 方法名(参数类型... 参数名) {
         方法体;
         return 返回值;
     }
 ​
     1. 在调用可变参数的方法时,可以向可变参数位置传递任意个数据
     2. 可变参数的本质就是数组,所以可以将可变参数当成数组去使用
     3. 因为可变参数的本质是数组,所以调用可变参数的方法时,也可以向可变参数位置传递数组。
 ​
 注意:
     1. 一个方法中最多只能有一个可变参数。
     2. 方法中可变参数必须在最后一个位置。
复制代码

 

 

posted @   进击的小蔡鸟  阅读(175)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示