代码编织梦想

背景介绍

Lambda表达式是JAVA8中提供的一种新的特性,是一个匿名函数方法。可以把Lambda表达式理解为一段可以传递的代码,可以写出更简洁、更灵活的代码。

Lambda表达式就是对函数式接口中抽象方法的实现,是对其匿名内部类的一个简写,只保留了方法的参数列表和方法体,其他的成分可以省略。因此,Lambda表达式的格式非常简洁,只有三部分组成:

  • 参数列表

  • 箭头

  • 方法体

即 (参数列表)->{方法体}

实验内容

使用Lambda表达式比较器Comparator给List对象排序,分别按Name、Age(倒序)、Grade排序。List对象内容如下表:

ID

Name

Age

Grade

1

ZhangSan

28

98

2

LiSi

21

100

3

KangKang

27

89

4

LiMing

19

92

5

WangGang

22

66

6

ZhaoXin

24

85

7

LiuWei

20

78

8

BaiZhanTang

16

99

(1)实验思路

①定义类Info,将需要比较的各项内容看作Info类中的成员变量,通过比较成员变量的值进行排序。设置四个成员变量:int类型的ID,String类型的name,int类型的age和int类型的grade,并将之设置为private。

②设置各个成员变量的get方法,并重载toString方法以输出个人信息。

③定义类Test,并在main方法中定义元素类型为Info类的List。通过创建Info实例,将8个人的信息输入List中。

④使用Comparator接口中处理排序问题的sort方法进行List内的元素排序,简化比较且满足题意。sort中的函数使用lambda表达式,对于String类型的name,使用compareTo方法进行比较;对于Integer类型的age和grade,使用Integer类的compare方法进行比较。

⑤使用foreach语句,对List中的元素进行输出。

(2)实验源码

Info类:

public class Info{
    private int ID;
    private String name;
    private int age;
    private int grade;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int getGrade() {
        return grade;
    }

    Info(int ID,String name,int age,int grade){
        this.ID=ID;
        this.name=name;
        this.age=age;
        this.grade=grade;
    }

    public String toString() {
        return "ID:"+ID+" "+"Name:"+name+" "+"Age:"+age+" "+"Grade:"+grade+" ";
    }
}

Test类:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<Info> myList = new ArrayList<>();
        myList.add(new Info(1, "ZhangSan", 28, 98));
        myList.add(new Info(2, "LiSi", 21, 100));
        myList.add(new Info(3, "KangKang", 27, 89));
        myList.add(new Info(4, "LiMing", 19, 92));
        myList.add(new Info(5, "WangGang", 22, 66));
        myList.add(new Info(6, "ZhaoXin", 24, 85));
        myList.add(new Info(7, "LiuWei", 20, 78));
        myList.add(new Info(8, "BaiZhanTang", 16, 99));

        myList.sort((Info i1, Info i2) -> (i1.getName()).compareTo(i2.getName()));
        System.out.println("按Name排序:");
        for (Info elem : myList) {
            System.out.println(elem.toString());
        }

        myList.sort((Info i1, Info i2) -> (Integer.compare(i1.getAge(), i2.getAge())));
        Collections.reverse(myList);
        System.out.println("\n按Age倒序排序:");
        for (Info elem : myList) {
            System.out.println(elem.toString());
        }

        myList.sort((Info i1, Info i2) -> (Integer.compare(i1.getGrade(), i2.getGrade())));
        System.out.println("\n按Grade排序:");
        for (Info elem : myList) {
            System.out.println(elem.toString());
        }

    }
}

(3)运行截图

016865b1f16b743f2b7f97c2cf30ba24.png
3663db3993d7d736fc6bfbe286564590.png

(4)实验心得

此题中共有三个难点。

第一个难点在于List的学习与使用。在此之前,我们很少接触List,如何使用List成为了一个很大的困难。

第二个难点在于lambda表达式的使用,如何使用lambda表达式编写简单易懂的函数表达式成为了一个困难。通过简单的“->”,我实现了匿名函数的书写,更加方便地实现了排序函数。

第三个难点在于使用Comparator接口下的sort函数排序时的函数编写。其一在于,sort函数的使用需要一定基础;其二在于比较函数的编写。String类型的比较可以通过compareTo直接返回int值;由于int类型无法使用comapreTo语句,三元运算符比较又显冗长繁琐,如何对int(Integer)类型的成员进行比较成为了一个困难。通过使用Integer类型自带的compare方法,可以成功解决这一问题。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ayaishere_/article/details/128711861

java8使用Lambda表达式比较器Comparator给List对象排序,按时间、数字、字典排序-爱代码爱编程

使用lambda给list对象排序示例 package com.alexli.test; import com.alexli.codetemplate.util.DateUtil; import com.alexli.entity.Message; import java.util.ArrayList; import java.util.List

Comparator接口、Lambda表达式和PriorityQueue优先队列-爱代码爱编程

Comparator接口 接口重写方法Comaparator接口用于实现排序,通常作为排序的参数输入,如Collections.sort(array,Comparator),接口中包含compare(Object obj1,Object obj2)和equals(Object obj)方法,compare方法用于比较obj1和obj2,obj1>o

Java比较器、迭代器、lambda表达式-爱代码爱编程

目录 一、比较器(1)Comparable接口(2)Comparator接口二、Iterato迭代器Iterator与Iterable三、lambda表达式(1)函数式接口(2)lambda表达式语法 一、比较器 需要为多个对象排序时必须设置排序规则,而排序规则就可以通过比较器进行设置,在Java中,提供了两种比较器,分别是Comparabl

java8 lambda 排序_java8新特性(一)使用Lambda表达式集合比较排序-爱代码爱编程

概述 最近开始在手头的项目中用到了一些java8的新特性,用了感觉不错,特分享记录下。 Lambda表达式,是java语言层次上的改变,Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据,一种函数式编程的概念。废话不多说,上代码: 在集合比较排序上的应用 我们先创建一个简单的实体类: public cla

java8 comparator接口_Java8 Comparator接口和lambda表达式的使用-爱代码爱编程

最近在刷题的时候,经常会遇到一些问题需要先对数据按照某种规则排序,再做下一步的处理。我们都知道如果相对某一个类的对象进行排序操作,只要这个类实现了Comparable<>接口,并且重写了CompareTo()方法即可直接通过对集合或数组调用sort()方法实现排序,例如 Student类实现Comparable接口 public cla

java比较器匿名_Java8-Lambda中比较器Comparator的使用-爱代码爱编程

一、概念 先来看下典型的比较器示例: Comparator byName = new Comparator() { @Override public int compare(Developer o1, Developer o2) { return o1.getName().compareTo(o2.getName()); // name是St

java lambda compare_Java 8 Lambda 表达式比较器使用-爱代码爱编程

引言 在这个例子中,我们将向您展示如何使用 java8 lambda 表达式编写一个 Comparator 来对 List 进行排序。 经典的比较器示例: Comparator byName = new Comparator() { @Override public int compare(Developer o1, Developer o2

java lambda compare_Java 8 Lambda 表达式比较器使用示例代码-爱代码爱编程

引言 在这个例子中,我们将向您展示如何使用 java8 lambda 表达式编写一个 Comparator 来对 List 进行排序。 经典的比较器示例: Comparator byName = new Comparator() { @Override public int compare(Developer o1, Developer o2

Java8進階_Java8_Lambda表达式进阶(比较器)-爱代码爱编程

我们先来看两个题 计算一个字符串中小写字母个数 计算个数我们知道可以用count方法,然后剩下就是找到字符串中的小写字母,使用String对象的chars方法可以拿到字符列表,然后过滤小写字母 public static int countLowercaseLetters(String string) { return (int) string

用java中用类方法编写排序_Java8 使用lambda表达式编写比较器对集合排序-爱代码爱编程

1.概述 Lambda表达式(也称为闭包)是整个Java 8发行版中最受期待的在Java语言层面上的改变,Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据。 在最简单的形式中,一个lambda可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如: Arrays.asList( "a", "b"

java1.8 lambda表达式_java1.8之Lambda表达式-爱代码爱编程

行为参数化 为了应对多变的需求,难道我们就要因为客户每提出一个需求,我们就要写一个方法去实现吗? 显然这样做很冗余,而且维护性大大降低,这说明代码的设计不够好。好在已经有前人帮我们提出了行为参数化思想(即将一段代码逻辑作为参数,使之可以在不同对象间传递)。 java1.8以前使用匿名类来实现行为参数化,即使用匿名类去实现一个函数式接口中的方法。j

Java中的Lambda表达式的使用(详解)-爱代码爱编程

一、概述         Lambda表达式 --> 函数式编程(函数编程思想)         面向对象编程思想:                 强调的是【对象】,必须通过对象的形式来做一些事情,一般情况下会比较复杂。                 例如:多线程执行任务,需要创建对象,对象需要实现接口Runnable,我们想自己完成,需

Java8--Lambda表达式和方法引用-爱代码爱编程

目录 Lambda 表达式一、Lambda 表达式语法二、Lambda表达式与传统代码的比较方法引用 Lambda 表达式 这是 Java 函数式编程的核心。Lambda 表达式是 Java 中的主要构造,它在语言中提供了一种新的语法,使我们能够以自然的方式表达函数。 1、Lambda 表达式是面向对象平台中函数式编程原则的实现。 2

JAVA Lambda表达式详细讲解-爱代码爱编程

JAVA Lambda表达式详细讲解 文章目录 JAVA Lambda表达式详细讲解一、Lambda 表达式介绍1.Lambda 是什么?2.Lambda有什么用呢?3.接口要求4.@FunctionalInterface 注解作用二、Lambda 表达式语法1.语法结构2.Lambda 表达式的重要特征3.Lambda 案例三、Lambda表达

Java8新特性-Lambda表达式-爱代码爱编程

1.概念 Lambda表示式是一个匿名函数,java8允许把函数作为参数传递到方法中 2.语法 参数parameters-> 表达式expression 或者 参数parameters-> {声明statements;} 3.作用 使用 Lambda 表达式可以使代码变的更加简洁紧凑。让 java 也能支持简单的函数式编程。 4

java中常用的lambda表达式_℡_牵伴 ※的博客-爱代码爱编程

java中常用的Lambda表达式 日常开发中,我们很多时候需要用到Java 8的Lambda表达式,它允许把函数作为一个方法的参数,让我们的代码更优雅、更简洁。所以整理了一波工作中,我常用的,有哪些Lambda表达式。看

golang入门笔记——kitex-爱代码爱编程

WSL的安装 由于Kitex并不支持Linux,所以需要首先安装WSL2 WSL一句话来说就是微软出的一个虚拟机工具 Win11下安装WSL2的步骤为: 1.“开始菜单”搜索功能,打开“启动或关闭Window功能”

java8 lambda表达式用法详解-爱代码爱编程

目录 一、匿名内部类1.1 匿名内部类概述1.2 匿名内部类使用场景1.3 创建线程示例 二、函数式(Functional)接口2.1 函数式接口概述2.2 函数式接口示例2.3 自定义函数式接口2.4

java8之lambda表达式_java复杂表达式-爱代码爱编程

目录 一、初识Lambda1.Lambda栗子2.Lambda表达式的组成3.举个栗子 二、Lambda更进一步1.类型推断2.方法引用 一、初识Lambda Lambd