Java8使用Lambda表达式案例

一、Lambda 表达式简介

1、什么是 Lambda 表达式
       Lambda 表达式是在 JDK 8 中引入的一个新特性,可用于取代大部分的匿名内部类。使用 Lambda 表达式可以完成用少量的代码实现复杂的功能,极大的简化代码代码量和代码结构。同时,JDK 中也增加了大量的内置函数式接口供我们使用,使得在使用 Lambda 表达式时更加简单、高效。


为什么需要 Lambda 表达式
       谈起为什么需要 Lambda 表达式,那得从函数式编程开始说起。函数式编程可以简单说是一种编程规范,也就是如何编写程序的方法论。它属于结构化编程的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。函数式编程有很多优点,其中包括:

易于并发编程;
代码的热升级;
更方便的代码管理;
代码简洁,开发快速;
接近自然语言,易于理解;
函数式编程在 C#、Python、JavaScript中都得到充分体现,在 Java 8 版本中也得到了支持。最明显的就是对 Lambda 表达式的支持。很多种迹象表明未来编程语言将是逐渐融合各自的特性,而不是单纯的声明式语言函数编程语言。将来声明式编程语言借鉴函数编程思想,函数编程语言融合声明式编程特性,这几乎是一种必然趋势。

       在 Java 中主要引入 Lambda 表达式的作用是对现有编码语义的优化,减少语法冗余。轻量级的将代码封装为数据,使代码简洁,易于理解。
 

二、Lambda表达式使用案例


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.apache.commons.lang3.ArrayUtils;
import org.junit.Test;
import org.springframework.util.StringUtils;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * java8使用lamda表达式
 */
public class JavaLambdaTest {


    /**
     * 字符串转数组,以分隔符
     */
    @Test
    public void stringToArray() {

        //java8以前字符串转数组
        String str = "0,1,2,3,4,5";
        String[] arr = str.split(","); // 用,分割
        System.out.println("java8以前字符串转数组 " + Arrays.toString(arr));
    }

    /**
     * 数组转字符串,以分隔符
     */
    @Test
    public void arrayToString() {

        String[] arr = {"0", "1", "2", "3", "4", "5"};

        //方法一: 遍历
        StringBuffer strBuffer = new StringBuffer();
        for (String s : arr) {
            strBuffer.append(s);
        }
        System.out.println("java8以前数组转字符串: " + strBuffer.toString());

        //方法二: 使用StringUtils的join方法
        String str2 = org.apache.commons.lang3.StringUtils.join(arr, ",");
        System.out.println("使用StringUtils的join方法: " + str2);

        //方法三: 使用org.apache.commons.lang3.ArrayUtils的toString方法
        String str3 = ArrayUtils.toString(arr, ",");
        System.out.println("使用ArrayUtils的toString方法: " + str2);


        List<String> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i + "");
        }

        //方法四: 使用org.springframework.util.StringUtils的arrayToDelimitedString方法
        String str4 = StringUtils.arrayToDelimitedString(list.toArray(new String[list.size()]), ",");
        System.out.println("使用StringUtils的arrayToDelimitedString方法: " + str2);
    }


    /**
     * String转List
     */
    @Test
    public void stringToList() {
        String str = "11111,你好,是是是";

        //方法一: 先使用split方法转成数组,然后再用Arrays.asList方法把数组转成list
        //List<String> list1 = Arrays.asList(str.split(","));

        List<String> list1 = new ArrayList<String>(Arrays.asList(str.split(",")));
        System.out.println("先使用split方法转成数组,然后再用Arrays.asList方法把数组转成list : " + list1);

        List<String> list2 = Stream.of(str.split(",")).collect(Collectors.toList());
        System.out.println("String字符串转成List<Long>数据格式 : " + list2);

        //String字符串转成List<Long>数据格式
        String str1 = "1,2,3,4,5,6";
        List<Long> list3 = Arrays.stream(str1.split(",")).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
        System.out.println("String字符串转成List<Long>数据格式 : " + list3);
    }

    /**
     * List转字符串,以分隔符
     */
    @Test
    public void collectionToString() {
        List<String> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i + 100 + "");
        }
        //使用for循环遍历方式
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            if (i != 0) {
                sb.append(",");
            }
            sb.append(list.get(i));
        }
        System.out.println("使用for循环遍历方式: " + sb.toString());

        String newStr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值