1、背景:

package com.zhangwl.pg0922.pg02_Jdk8.Lambda.pkg01;

import java.util.Comparator;

/**
* @ClassName LengthComparator
* @Description 定制一个比较器用于排序
* @Author zhangwl
* @Date 2019/9/22 21:53
* @Version 1.0
**/
public class LengthComparator implements Comparator<String> {

@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
}


package com.zhangwl.pg0922.pg02_Jdk8.Lambda.pkg01;

import java.util.Arrays;

/**
* @ClassName RunMain
* @Description
* @Author zhangwl
* @Date 2019/9/22 22:06
* @Version 1.0
**/
public class RunMain {
public static void main(String[] args) {
/*定义一个用于比较的字符串数组*/
String[] strArr = new String[]{"bcc", "ac", "caad", "b"};
System.out.println("排序之前的字符串数组:" + Arrays.asList(strArr));
/*自定义一个比较器用于元素排序*/
LengthComparator lengthComparator = new LengthComparator();
Arrays.sort(strArr, lengthComparator);
System.out.println("排序之后的字符串数组:" + Arrays.asList(strArr));
}
}

运行结果:

排序之前的字符串数组:[bcc, ac, caad, b]
排序之后的字符串数组:[b, ac, bcc, caad]

 在jdk8之前,java并不能直接传输一个代码段或者说传输一个代码段并不容易,java是一种面向对象的语言,所以必须构造一个对象,在这个对象的类中必须包含一个方法,该方法能够包含所需要的代码段;所以诞生了Lambda表达式。

 Lambda表达式,其实就是一个代码段以及必须传入代码的变量规范,例如:(String a ,String b)-> {a + b}。Lambda表达式就是一个带有参数的表达式,其表示的是一个匿名内部类。 

2、案例演示:

package com.zhangwl.pg0922.pg02_Jdk8.Lambda.pkg02;

import java.util.Arrays;

/**
* @ClassName LambdaRunMain
* @Description 利用Lambda表达式自定义一个比较器达到排序字符串数组的目的
* @Author zhangwl
* @Date 2019/9/22 23:41
* @Version 1.0
**/
public class LambdaRunMain {

public static void main(String[] args) {

String[] strArr = new String[]{"bcc", "ac", "caad", "b"};
System.out.println("排序之前的字符串数组:" + Arrays.asList(strArr));
Arrays.sort(strArr, (first, second) -> {
return first.length() - second.length();
});
System.out.println("排序之后的字符串数组:" + Arrays.asList(strArr));
}
}

运行结果:

排序之前的字符串数组:[bcc, ac, caad, b]
排序之后的字符串数组:[b, ac, bcc, caad]

 

posted on 2019-09-22 23:33  it_zhangwl  阅读(203)  评论(0编辑  收藏  举报