• Stream中sorted方法的使用方式


    在实际使用过程中我们在好多时候需要对列表中的数据进行排序,Stream中的sorted方法就很好的解决了这个问题,一下是我对sorted方法的一些理解

    首先对列表中的数据进行排序病存放到新的列表中

    //创建一个数据列表
     List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
    
    //对列表中的数据进行排序
    List<Integer> squaresList = numbers.stream().sorted().collect(Collectors.toList());
    System.out.println("排序: " + squaresList);
    //对列表中的数据逆序排序
    squaresList = numbers.stream().sorted((x, y) -> y - x).collect(Collectors.toList());
    System.out.println("逆序: " + squaresList);

    //对于进行逆序排序来说还可以使用Comparator 提供的reverseOrder() 方法
    squaresList = numbers.stream().sorted(Comparator.reverseOrder())
    //或者逆序还可以使用.reversed()
    .sorted(Comparator.comparing(StudentInfo::getAge).reversed())

    另外,还可以对字符列表进行排序

         //对字符列表进行排序
            List<String> strList = Arrays.asList("a", "ba", "bb", "abc", "cbb", "bba", "cab");
            Map<Integer, String> strMap = new HashMap<Integer, String>();
            strMap = strList.stream().collect( Collectors.toMap( str -> strList.indexOf(str), str -> str ) );
    
            strMap.forEach((key, value) -> {
                System.out.println(key+"::"+value);
            });

     另外sorted方法不仅仅可以对一些简单的列表进行排序,还可以根据某一个对象中的某个属性值对整个对象列表进行一个排序

    例如:

    //根据学生表中的年龄进行排序
    list.stream().sorted(Comparator.comparing(Student::getAge)) 
    //对学生表中的年龄进行逆序排序
    list.stream().sorted(Comparator.comparing(Student::getAge).reversed()) 
    //使用年龄进行排序,年龄相同后使用身高排序
    list.stream().sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getHeight)).collect(Collectors.toList());
  • 相关阅读:
    c#多线程
    把.NET程序部署到没有安装.NET Framwork的机器上
    Java字符编码转换过程说明
    Window 消息大全使用详解
    Regsvr32
    VC++的应用程序框架中各类之间的访问方法
    java接收中文输入并正常显示
    Visual C#中的数据绑定
    截取系统 API 调用(转)
    几个操作文件的API函数
  • 原文地址:https://www.cnblogs.com/1gaoyu/p/16009607.html
Copyright © 2020-2023  润新知