Java8新特性代码示例浅聊

Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。
博主最近才有空研究了一下Java8的一些新特性,简单地写了一些测试用例,感觉开始有那味了,受益颇深,将示例代码贴出,以供大家学习交流。

测试用例代码:

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

/**
 * @ClassName Java8Test
 * @Description java8新特性测试用例
 * @Author zzp
 * @Date 2020/6/30 11:06
 * @Version 1.0
 */
public class Java8Test {


    public static void main(String[] args) {
        Java8Test test=new Java8Test();
        List<String> hobbies1= Arrays.asList("篮球","看书","写作");
        List<String> hobbies2= Arrays.asList("足球","看书","睡觉");

        Person mayun=new Person("马云","老师",hobbies1);
        Person mahuateng=new Person("马化腾","码农",hobbies2);
        Person leijun=new Person("雷军","码农",hobbies1);

        List<Person> persons=Arrays.asList(mayun,mahuateng,leijun);

        //情景1:找一个人叫马云的这个人详细资料
        //java8之前
       Person person1= null;
        for (Person person:persons ) {
            if(person.getName().equals("马云")){
                person1=  person;
                break;
            }
        }
        System.out.println(person1);

       //java8 一行搞定
        Optional<Person> person2=persons.stream().filter(person -> person.getName().equals("马云")).findFirst();
        System.out.println(person2.orElse(new Person("叫马云的人不存在")));

        //情景2:按照职业给mayun mahuateng leijun这个三个人分组
        //java8之前
        Map<String,List<Person>> workPersonMap1=new HashMap<>();
        for (Person person:persons) {
            String work=person.getWork();
            List<Person> personList=null;
            if(null==workPersonMap1.get(work)){
                personList=new ArrayList<>();
            }else{
                personList=workPersonMap1.get(work);
            }
            personList.add(person);
            workPersonMap1.put(work,personList);
        }
        System.out.println(workPersonMap1);

        //java8 一行搞定
        Map<String, List<Person>> workPersonMap2=  persons.stream().collect(Collectors.groupingBy(Person::getWork));
        System.out.println(workPersonMap2);

        //情景3:获得mayun mahuateng leijun这个三个人的所有爱好
        //java8之前
        Set<String> hobbiesSet=new HashSet<>();
        for (Person person:persons) {
            hobbiesSet.addAll(person.getHobbies());
        }
        System.out.println(hobbiesSet);

        //java8 一行搞定
        Set<String> hobbiesSet2= persons.stream().flatMap(p->p.getHobbies().stream()).collect(Collectors.toSet());
        System.out.println(hobbiesSet2);


    }

}


import java.util.List;

/**
 * @ClassName Person
 * @Description TODO
 * @Author zzp
 * @Date 2020/6/30 11:17
 * @Version 1.0
 */
public class Person {
    private String name;
    private String work;
    private List<String> hobbies;


    public Person() {
    }

    public Person(String name, String work, List<String> hobbies) {
        this.name = name;
        this.work = work;
        this.hobbies = hobbies;
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

    public String getWork() {
        return work;
    }

    public void setWork(String work) {
        this.work = work;
    }

    public List<String> getHobbies() {
        return hobbies;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", work='" + work + '\'' +
                ", hobbies=" + hobbies +
                '}';
    }
}

详细的java8特性下一篇给大家贴出,大家看了有什么感受也可以在评论区交流。如果觉得博主不易,就给点个赞吧,拒绝白嫖~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值