JDk8 新特性学习随笔

添加的新特性:

##jdk 8
lambda 匿名函数
一、只保留参数列表->引用方法体
作用:去掉匿名内部类
##方法引用::
本质是lambda表达式的简写。
##集合内部循环
##Stream API
##集合泛型的自动推断
一、lambda匿名函数

package com.example;

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

public class MyClass {
    public static void main(String[] args) {

        System.out.println("jdk8...");
        //jdk8之前
        testThread();
        //jdk 8之后
        testThreadLambda();
        //lambda 方法引用::
        testMethodLambda();

        //lambda 集合内部循环
        testListForEach();
    }

    private static void testListForEach() {
        List<Persion> list = new ArrayList<>();
        //jdk 5.0之前
        for (int i = 0; i < 5; i++) {
            Persion p = new Persion("persion" + i, i);
            list.add(p);
        }
        //jdk 5.0之后
        for (Persion item : list) {
            item.setAge(18);
        }

        for (Persion item : list) {
            System.out.println(item);
        }
        System.out.println("-----------------------------------");
        //jdk 8 lambda 内部循环
        list.forEach(item -> item.setAge(20));
        list.forEach(item -> System.out.println(item));
        System.out.println("-----------------------------------");
        list.forEach(item -> item.setAge(30));
        list.forEach(System.out::println);
    }

    private static void testMethodLambda() {
        //lambda 调用static方法 Object::method
        new Thread(Md5Utils::getStaticFilds).start();
        //lambda 调用filds obj::method
        Md5Utils utils = new Md5Utils();
        new Thread(utils::getFilds).start();
    }

    private static void testThreadLambda() {
        //只保留参数列表->引用方法体
        new Thread(() -> System.out.println("current thread name:subThread jdk 8")
        ).start();
    }

    private static void testThread() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("current thread name:subThread");

            }
        }).start();
    }
}

二、Stream API

package com.example;

import java.util.Arrays;
import java.util.List;

/**
 * Created by zqh on 2017/9/3.
 */

public class StreamApi {


    public static void main(String[] args) {
        List<Integer> nums = Arrays.asList(1, 1, null, null, 5, 6, 7, 8, 9, 10,2,3,4);
        int sum = nums.stream()
                .filter(item -> item != null)//filter:操作符过滤作用(输入满足的条件)
                .distinct()//distinct:操作符:去重
                .mapToInt(item -> item * 2)//mapToInt:操作符:对集合中的每一个元素进行整形运算
                .skip(2)//skip操作符:跳过两个元素
                .limit(4)//limit操作符:返回指定元素个数
                .sum();//sum:属于聚合函数,同时也是结束函数(此时才进行循环)
        nums.forEach(System.out::println);
        System.out.println("sum: " + sum);

    }

}

三、Android Studio Android 项目 使用JDK8 需要的条件: 需要添加retroLambda插件

1、安装部署jdk8开发环境。

2、在project 的build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    classpath 'me.tatarka:gradle-retrolambda:3.7.0'//3.0

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
3、在android module  的build.gradle

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
	
--------------------------------------------
	//设置当前的jdk编译版本 8
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

最后附上retroLambda插件github地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值