list集合对sort的使用方法

这篇具有很好参考价值的文章主要介绍了list集合对sort的使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

List集合的排序:

java提供了两种排序方式,分别是Collections.sort(List)和Collections.sort(List,Commparator),下面就这两种方法的使用做详细的说明:

方法一:Collections.sort(List)

这个方法有分两种情况:1、比较的是基础数据 2、比较的是引用数据

1、基础数据的比较呢,一般都是直接比较,因为基础数据都实现了CompareTo()方法,例如

 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class CommparableClass {
    /**
     * 用Collections.sort(List)排序
     * list元素的类型是String类型
     * String 类型实现了Commparable接口,并重写了CompareTo方法
     * CompareTo方法中写的是比较原则
     */
    public void sortString(){
        ArrayList<String> strs=new ArrayList<String>();
        strs.add("123");
        strs.add("987");
        strs.add("abc");
        strs.add("ABC");
 
        System.out.println("---------------原始顺序,没有排序-------------");
        for(String str:strs){
            System.out.println(str);
        }
        System.out.println("----------------------------------------");
        Collections.sort(strs);
        System.out.println("--------------- 经过排序后输出   --------------");
        for(String str:strs){
            System.out.println(str);
        }
    }
}
  1. 比较的是引用数据,引用数据就必须要我们实现Comparable接口,并重写CompareTo方法,在此方法中指定排序原则,例如

public class Student  implements Comparable<Student>{
    public String stuNo;
 
    public String name;
   
    public Integer age;
 
 
    @Override
    public int compareTo(Student o) {
        // TODO Auto-generated method stub
        //按照年龄排序
        int result1=this.getAge()-o.getAge();
        return result1;
    }
}

排序的情况如下:


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CommparableClass {
/**
     * 用Collections.sort(List)排序
     * list元素的类型是Student类型
     * String 类型实现了Commparable接口,并重写了CompareTo方法
     * CompareTo方法中写的是比较原则
     */
    public void sortStudent(){
        ArrayList<Student> stus=new ArrayList<Student>();
        Student stu1=new Student("张三",20,"S001");
        Student stu2=new Student("李四",21,"S002");
        Student stu3=new Student("王五",22,"S003");
        Student stu4=new Student("张四",22,"S004");
 
        stus.add(0,stu1); 
        stus.add(1,stu2);
        stus.add(2,stu3);
        stus.add(3,stu4);
 
        System.out.println("---------------原始顺序,没有排序-------------");
        for(Student stu:stus){
            System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
        }
        System.out.println("----------------------------------------");
        Collections.sort(stus);
        System.out.println("--------------- 经过排序后输出   --------------");
        for(Student str:stus){
            System.out.println("name="+str.getName()+"age="+str.getAge()+"stuNo="+str.getStuNo());
        }
    }
    }

方法二:Collections.sort(List,Commparator)

-Collections.sort(List,Commparator);

sort方法的参数有两个,一个是要排序的List集合,另一个参数是Comparator接口,在比较器中,指定要排序的原则,

使用比较器方式就不用对要比较的集合的类类型实现Comparable接口

可以实现多个比较器,每个比较器就是一种排序原则文章来源地址https://www.toymoban.com/news/detail-700906.html


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
import www.lxk.day15.demo1.Student;
 
public class ComparatorClass {
    /**
     * 此方法用于获取一个List集合
     * @return
     */
    public List<Student> getStudents(){
        List<Student> stus=new ArrayList<Student>();
        Student stu1=new Student("张三",20,"S001");
        Student stu2=new Student("李四",21,"S002");
        Student stu3=new Student("王五",22,"S003");
        Student stu4=new Student("张四",22,"S004");
 
        stus.add(0,stu1);
        stus.add(1,stu2);
        stus.add(2,stu3);
        stus.add(3,stu4);
        return stus;
    }
    /**
     * 根据Comparator接口的子实现来指定排序的原则,策略模式
     * 按照姓名排序
     * @param stus
     */
    public void sortName(List<Student> stus){
        Collections.sort(stus, new Comparator<Student>(){
 
            @Override
            public int compare(Student stu1, Student stu2) {
                return stu1.getName().compareTo(stu2.getName());
            }
 
        });
        for(Student stu:stus){
            System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
        }
    }
    /**
     * 根据Comparator接口的子实现来指定排序的原则,策略模式
     * 按照年龄排序
     * @param stus
     */
    public void sortAge(List<Student> stus){
        Collections.sort(stus, new Comparator<Student>(){
 
            @Override
            public int compare(Student stu1, Student stu2) {
                return stu1.getAge()-stu2.getAge();
            }
 
        });
        for(Student stu:stus){
            System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
        }
    }
    /**
     * 根据Comparator接口的子实现来指定排序的原则,策略模式
     * 按照年龄排序
     * @param stus
     */
    public void sortstuNo(List<Student> stus){
        Collections.sort(stus, new Comparator<Student>(){
 
            @Override
            public int compare(Student stu1, Student stu2) {
                return stu1.getStuNo().compareTo(stu2.getStuNo());
            }
 
        });
        for(Student stu:stus){
            System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
        }
    }
}

随机排序

Collections.shuffle(list); //进行随机排序

到了这里,关于list集合对sort的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java02-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

    目录 什么是遍历? 一、Collection集合的遍历方式 1.迭代器遍历 方法 流程 案例 2. foreach(增强for循环)遍历 案例 3.Lamdba表达式遍历 案例 二、数据结构 数据结构介绍 常见数据结构 栈(Stack) 队列(Queue) 链表(Link) 散列表(Hash Table) 树(Tree) List接口 ArraysList集合 Linked

    2024年02月14日
    浏览(44)
  • Python:pandas库sort_values()方法的使用

    今天做到北京玛达科技有限公司2021数据处理工程师笔试题,有一题是这样: 按照文件中单词出现频次由高往低依次排序,这个对我来说很好实现,用上 pandas 的 sort_values 方法就手到擒来。但是他后面又加上了一个条件,如果频次相同的情况下,按照单词的 MD5 值排序。这可把

    2024年02月16日
    浏览(34)
  • 使用Collections.sort方法来对自定义对象进行排序

    Collections.sort方法可以用来对自定义对象进行排序。要实现这一点,需要在调用该方法时传入一个比较器,该比较器用于指定如何比较对象中的值。 举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:

    2024年02月13日
    浏览(45)
  • Java8-使用stream.sorted()对List排序

    1.流的定义 Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的操作! 如果流中的元素的类实现了 Comparable 接口,即有自己的排序规则,那么可以直接调用 sorted() 方法对元素进行排

    2024年02月16日
    浏览(54)
  • Java 中 List 集合排序方法

    注:Collections的sort方法其实是调用了List接口自己的sort方法。 首先你需要list.parallelStream().sorted 进行流处理,使用parallelStream可以充分调度多核CPU。 使用Comparator.comparing进行排序,reversed()进行倒序排列,thenComparing进行下一个排序。 Comparator.comparing()里面的内容,也是就是Obje

    2024年02月12日
    浏览(39)
  • 【Java基础】Java中List集合的常用方法

    在Java编程中,List集合是最常用的一种数据结构之一。它具有动态扩容、元素添加、删除和查询等基础操作,可以存储各种类型的对象,并且支持泛型。在本文中,我将介绍Java List集合的常用方法,并通过实例演示这些方法的使用。 一、List集合的创建与初始化 在使用List集合

    2024年02月16日
    浏览(37)
  • 【Java】List集合遍历的五种方法

    🎊专栏【Java】 🌺每日一句:人生最重要的就是要清醒的认知 ⭐欢迎并且感谢大家指出我的问题 目录 1.通过for循环配合List接口中的size()和get(index i)的方法 2.使用Iterator迭代器及其方法遍历集合 🍔迭代器 🍔具体操作 3.增强for循环遍历 🍔是for循环的一种 🍔格式 🍔好处 🍔弊

    2024年02月03日
    浏览(53)
  • 【Java】集合List的toArray()方法及其重载

    在Java中,集合(List 接口的实现类)提供了一个名为 toArray 的方法,用于将集合中的元素转换成数组。该方法有两个主要的重载形式,分别用于不同的情况。 这个方法将集合中的元素复制到一个指定类型的数组中,并返回该数组。 如果指定的数组大小足够容纳集合中的所有

    2024年02月11日
    浏览(30)
  • java集合之List接口实现类常用方法详解

    目录 一、List集合概述 二、ArrayList类 三、ArrayList常用方法实例 四、LinkedList类 五、Linkedist常用方法实例         java.util.List接口继承自Collection接口,是单列集合的一个分支,通常将实现了List接口的对象称为List集合,在List集合中允许出现重复的元素,所有的元素是以一种线

    2024年02月08日
    浏览(50)
  • Laravel 集合的使用 & 集合的常用方法 & 模型的数据集合 ⑩

    @作者 : SYFStrive   @博客首页 : HomePage 📜: THINK PHP 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 专栏连接🔗 👉 VUEJS (🔥) 👉 MYSQL (🔥) 👉 微信小程序 (🔥) 👉 PHPMYSQL (🔥) 👉 UNIAPP开发 (🔥) 提示:以下是本篇

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包