`

java8新特性学习笔记

阅读更多
package com.abing;

import org.apache.commons.lang.StringUtils;

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

/**
 * Created on 18/7/31 by bingyin.gby.
 */
public class Java8Test {

    public static void main(String[] args) {

        //将1个判断输入值字符串否为空,非空则输出,否则赋予默认值
        String s=null;
        String brandId= Optional.ofNullable(s).orElse("123456");

        List<String> names= Arrays.asList("bingyingao","tieyi");


        //遍历集合得到一个新的集合
        List<String> newNames= names.stream().filter(b-> StringUtils.contains(b,"tieyi")).map(a->"prefix"+a).collect(
            Collectors.toList());
        System.out.println("newNames:");
        newNames.forEach(System.out::println);

        //遍历原集合并且对原集合中对象进行操作???
        names.stream().map(a->a+"sufix");
        System.out.println("names:");
        names.forEach(System.out::println);
        new Java8Test().resetUserName();


        //定义function函数并且调用:list转set
        Function<List<String>,Set<String>> listToMap= list->list.stream().collect(Collectors.toSet());
        Set<String> names1=listToMap.apply(Arrays.asList("tieyi","tieyi","bingyingao"));
        System.out.println("listToSet:");
        names1.forEach(System.out::println);

        //所有用户的年龄进行求和,reduce
        new Java8Test().sumUserAge();
        //所有用户的年龄最大、最小、平均,求sum
        new Java8Test().intSummaryStatistics();
        //根据年龄排序
        new Java8Test().sortAgeAsc();

        //遍历map集合
        Map<String,String> classUnit=new HashMap<String,String>(){{
            put("class1","stu1,stu2");
            put("class2","stu2,stu3");
        }};
        classUnit.forEach((k,v)->System.out.println(k+":"+v));

        //遍历int数组
        int[] luckNums={0,8,5,6,7};
        Arrays.stream(luckNums).forEach(System.out::println);
        //遍历字符串数组
        String[] charsArrays="a,c,d,b".split(",");
        Arrays.sort(charsArrays);
        Arrays.asList(charsArrays).stream().forEach(a->System.out.println(a));
        //flatmap的用法

      // java8遍历map
        map.forEach((key, val) -> System.out.println(key + "-->" + val));

    }


    /**
     * 给用户名重设值
     */
    private void resetUserName(){
        List<Java8Test.UserInfo> userInfoList= Arrays.asList(new Java8Test.UserInfo("tieyi"),new Java8Test.UserInfo("bingyingao"));
        userInfoList.forEach(u->u.setName(u.getName()+"suFix"));
        userInfoList.forEach(a->System.out.println(a.getName()));
    }

    /**
     * 累加用户年龄
     */
    private void sumUserAge(){
        List<Java8Test.UserInfo> userInfoList= Arrays.asList(new Java8Test.UserInfo("tieyi",30),new Java8Test.UserInfo("bingyingao",31));
        Integer sumAge= userInfoList.stream().map(a->a.getAge()).reduce((a,b)->a=a+b).get();
        System.out.println(sumAge);


    }


    /**
     * 最佳统计方法
     */
    private void intSummaryStatistics(){
        List<Java8Test.UserInfo> userInfoList= Arrays.asList(new Java8Test.UserInfo("tieyi",30),new Java8Test.UserInfo("bingyingao",31));
        IntSummaryStatistics intSummaryStatistics= userInfoList.stream().mapToInt(a->a.getAge()).summaryStatistics();
        System.out.println(intSummaryStatistics.getAverage());
        System.out.println(intSummaryStatistics.getCount());
        System.out.println(intSummaryStatistics.getMax());
        System.out.println(intSummaryStatistics.getMin());
        System.out.println(intSummaryStatistics.getSum());




    }


    /**
     * 根据用户年龄由低到高排序
     */
    private void sortAgeAsc(){
        List<Java8Test.UserInfo> userInfoList= Arrays.asList(new Java8Test.UserInfo("tieyi",30),new Java8Test.UserInfo("bingyingao",31),new Java8Test.UserInfo("abing",29));
        //由低到高正序
        userInfoList.sort(Comparator.comparingInt(Java8Test.UserInfo::getAge));
        //由高到低正序
        userInfoList.sort(Comparator.comparingInt(Java8Test.UserInfo::getAge).reversed());
        userInfoList.forEach(a->System.out.println(a.getAge()));

    }

#list转为map
    private void list2Map(){
      Map<Long,TppItem> tppItemMap=items.stream().collect(Collectors.toMap(TppItem::getItemId,v->v,(k1,k2)->k1));
}




    public   class UserInfo{


        String name ="";
        int age;
        UserInfo(String name ){
            this.name=name;
        }
        UserInfo(int age){
            this.age=age;
        }

        UserInfo(String name,int age){
            this.name=name;
            this.age=age;
        }
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}
0
0
分享到:
评论
1 楼 cremains 2018-08-01  

相关推荐

    java8新特性学习笔记.rar

    但是我们实际开发中真正用到的新特性并不多,大多数人也仅仅用用lambda,而对于其他的特性,比如:多重注解、Date API、函数式接口等等并没有使用起来,本资源包含作者的学习java8新特性的笔记,笔记中有讲解和代码...

    全网详解(波哥)Java8新特性(Lambda、Stream、LocalDate等)新特性

    在自学的过程中,小生不才,整理了一点波哥的笔记同大家分享,这是全网详解(波哥)Java8新特性(Lambda、Stream、LocalDate等)新特性的全部笔记及代码。后续还会有springmvc、mybatis、mybatis-puls等部分的笔记以及...

    JAVA8的新特性学习笔记

    该笔记主要记录了学习Java8新增特性的全部信息,包含概念讲解及代码示例,主要针对Lambda表达式、函数式接口、方法引用及构造器引用、Stream API、Optional类几个模块深入浅出的介绍了各个模块的使用。希望对大家的...

    java jdk8 学习笔记

    8.JVM让Java可以跨平台,不同的系统平台有不同的JVM,它们都认识.class文件。Java编译语言将Java代码编译成.class文件(只有一种形式),而C/C++语言将代码编译成01码,不同的操作系统的01码指令不同,这造成了不能跨...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。  《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、...

    java笔记.zip

    尚硅谷康师傅java学习笔记。 、2020-4-5 java学习笔记 2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 ...2020-4-22 java8 新特性 2020-4-27 单元测试

    Java/JavaEE 学习笔记

    Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、...

    Java 12 的新特性.xmind

    自己总结的java中jdk12新特性的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者

    java学习笔记 初学者必读

    17. java5.0的新特性 17-59 17.1. 泛型 17-59 17.1.1. 说明 17-59 17.1.2. 用法 17-60 17.1.3. 泛型的通配符"?" 17-62 17.1.4. 泛型方法的定义 17-63 17.1.5. 泛型类的定义 17-63 17.1.6. 泛型与异常 17-64 17.1.7. ...

    javaSpring学习笔记

    这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用Spring框架的各种功能和特性。 在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,...

    java jdk7 学习笔记

    再看第二本《java核心技术卷1-基础知识》,bruce ...第三本是《java核心技术卷2-高级特性》。 第四本是bruce eckel本人编写的《java编程思想》。 第五本是《head first servlet &jsp》。 第六本是《head first ejb》。

    java学习笔记 达内笔记(经典)

    (二)面向对象技术总结.pdf (三)corejava高级特性总结 (四)接口学习总结 (五)异常和内部类 (六)集合框架学习总结 (七)GUI和AWT事件模型 (八)多线程学习总结 (九)输入输出流学习总结 (十)网络编程学习总结

    java5.0新特性总结--Annotation系统学习整理笔记

    NULL 博文链接:https://whp0731.iteye.com/blog/354887

    Java 14 的新特性.xmind

    自己总结的java中jdk14新特性的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者

    Java学习笔记&工作经验总结.rar

    1.Java_SE基础全程学习笔记.pdf 2.Java开发工作经验高级特性总结.pdf 3.Java数据结构笔记.pdf 4.Java学员总结笔记.pdf

    最全的java基础+java核心库学习笔记整理与整合源码

    javabase是java基础+java核心库 学习笔记整理整合而成的,里面包含进两百个涉及jse用法的常用易错、冷门及jdk6新特性等用法演示。 我的CSDN博客: http://blog.csdn.net/lmc1138789752/article/details/8272829

    Java 13 的新特性.xmind

    自己总结的java中jdk13新特性的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者

    良葛格java学习笔记

    良葛格java学习笔记,分享作者林信良的学习经验,更新JDK6.0新特性

    Java重要的基础知识/高级特性/工作经验170页笔记

    精心制作的170页Java学习笔记 这本笔记要讨论的主题范围大概有: 1 . JMM: Java Concurrency Java运行的基础之一 2 . Java Concurrency: Java Java最重要的高级特性之一 3 . JVM:即Java Virtual Machine.我们都...

    《良葛格Java JDK 5.0学习笔记》.rar

    包含java特性、java学习方法、网络资源汇总、jdk下载和安装、path与CLASSPATH的设置、java基本语法、关于对象的认识、数组、字符串(String类))、Ant简介、JUnit简介。 作者:林信良(网络化名良葛格) 学历:台湾大学...

Global site tag (gtag.js) - Google Analytics