`

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的新特性学习笔记

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

    java8新特性学习笔记.rar

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

    黑马程序员_java8新特性详解笔记和源码

    Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。

    Java基础 学习笔记 Markdownr版

    5. Java 8新特性:18Java8新特性.md中会涵盖Lambda表达式、函数式接口、Stream API、日期和时间API等Java 8的重要更新,这些新特性极大地简化了代码,增强了Java的表达力。 6. 反射与动态代理:17反射与动态代理.md...

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    java JDK 8学习笔记

    本学习笔记旨在深入解析JDK 8的关键特性,帮助初学者快速掌握这一版本的核心知识。 1. **lambda表达式**:JDK 8引入了lambda表达式,简化了函数式编程。它允许将匿名函数作为方法参数,或者用作方法返回值。Lambda...

    java学习笔记markdown

    12. **Java 8及更高版本的新特性**:涵盖Lambda表达式、函数式编程、Stream API、日期时间API等Java新特性,这些都是现代Java开发不可或缺的部分。 通过学习这份Markdown版的Java学习笔记,不仅可以掌握Java编程的...

    Java JDK 8学习笔记 带完整书签(不是页码书签哦)

    《Java JDK 8学习笔记》是由林信良教授在2015年3月出版的一本详尽解析Java SE 8新特性的书籍,由清华大学出版社发行。这本书共计643页,内容完整且清晰,包含目录和书签,便于读者高效地查阅和学习。 在Java JDK 8...

    Java JDK 7学习笔记 PDF

    Java JDK 7是Java开发工具包的一个重要版本,它的全称是Java Development Kit,是用于构建和运行Java应用程序的关键组件。...通过这份PDF学习笔记,读者将能深入理解JDK 7的新特性,并能将其应用到实际项目中。

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    Java入门学习笔记

    总之,这份"Java入门学习笔记"是一个全面的Java学习资源,覆盖了从基础知识到高级特性的广泛内容,对于想要踏入Java编程世界的新手来说,是一份不可多得的参考资料。通过阅读并实践这些笔记,初学者不仅可以掌握Java...

    JAVA程序设计学习笔记.pdf

    JAVA 程序设计学习笔记 JAVA 程序设计学习笔记是一个详细的学习笔记,涵盖了 JAVA 程序设计的基本概念、语言特征、类库、环境设置、安装等方面的知识点。 1. JAVA 程序设计的基本概念 JAVA 程序设计是一种基于...

    Java学习笔记(必看经典).pdf

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    Java基础尚硅谷宋红康学习笔记

    【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。Java以其“一次编写,到处运行”的特性...通过深入学习和实践,你可以不断提升自己的Java编程能力。

    JAVA学习笔记 林信良

    《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...

    java jdk8 学习笔记

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

    java学习笔记(全)

    同时,对于现代化的开发,笔记也可能包含关于Java 8及以上版本的新特性,如Lambda表达式、Stream API和日期时间API等。 最后,笔记可能还包括一些实践项目或案例分析,帮助读者将所学知识应用到实际场景中,增强...

    Java学习笔记及心得

    ### Java学习笔记及心得知识点详细解析 #### 标题:Java学习笔记及心得 #### 描述:Core Java 学习笔记及心得 pdf格式可打开。涵盖了java的基础入门知识,非常适合自学的及想深入学习理解的同学。 #### 标签:...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记是为Java初学者量身定制的一份宝贵资料,它涵盖了Java编程的基础概念、语法以及核心特性。这份PPT简体版旨在帮助读者快速掌握Java开发的基本技能,逐步成为一名合格的Java程序员。 Java JDK...

Global site tag (gtag.js) - Google Analytics