java stream的理解和使用

本文介绍了如何在Java中使用Stream API进行流的过滤(filter),获取指定数量元素(limit)以及跳过元素(skip)实现分页,以及去除重复元素(distinct)。通过实例展示了map方法的使用,演示了如何对集合元素进行转换并返回流对象。
摘要由CSDN通过智能技术生成

stream:意思是 流 的意思,那么其操作的对象就应该是小个体组成的流,不能是一个完整的组合体如类(不是集合类),所以其可以操作集合,数组等。
在这里插入图片描述
方法: filter:过滤流中的某些元素
limit(n):获取n个元素
skip(n):跳过n元素,配合limit(n)可实现分页
distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素

		 map:遍历每个集合中的元素,对每个能进行自己想要的操作,最后出流。
		 出流后,不转换,就会返回stream类型;

java代码:

package com.example.dtest.stream;


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
*           filter:过滤流中的某些元素
 *         limit(n):获取n个元素
 *         skip(n):跳过n元素,配合limit(n)可实现分页
 *         distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素
*
* */
public class StreamFLSD {

    public static void main(String[] args) {


        List<User> userList = new ArrayList<>();
        userList.add(new User("daj","213464",456));
        userList.add(new User("daj","2134546",456));
        userList.add(new User("d456","213464",456));
        userList.add(new User("daj","213464",456));

// 1、       filter 过滤
        List<User> userListfilter = new ArrayList<>();
        userListfilter = userList.stream().filter(user -> {
            return user.getName().equals("daj");
        }).collect(Collectors.toList());
        System.out.println("userListfilter========"+userListfilter);



//  2、    limit(n):限制获取n个元素
        List<User> userListLimit = new ArrayList<>();
        userListLimit = userList.stream().limit(2).collect(Collectors.toList());
        System.out.println("userListLimit==========="+userListLimit);

//  3、     skip(n):跳过n个元素,配合Limit(n)可实现分页效果
        List<User> userListSkip = new ArrayList<>();
        userListSkip = userList.stream().skip(2).collect(Collectors.toList());
        System.out.println("userListSkip======="+userListSkip);

//  4、     distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素
        List<User> userListDistinct = new ArrayList<>();
        userListDistinct = userList.stream().distinct().collect(Collectors.toList());
        System.out.println("userListDistinct=========="+userListDistinct);



    }

}

2、map:

package com.example.dtest.stream;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamMap {

    public static void main(String[] args) {

        List<User> users = new ArrayList<>();
        User user1 = new User("556","56",123);
        User user2 = new User("5565","564",1235);
        users.add(user1);
        users.add(user2);
        //取出User中的phone集合,返回
        List<String> phone = users.stream().map(User::getPhone).collect(Collectors.toList());
        System.out.println(users.stream().map(User::getAge).collect(Collectors.toList()));
        System.out.println(phone);

        List<User01> s3 = users.stream().map(user -> {
            User01 user01 = new User01();
            if(user.getAge()==123){

                user01.setAge(user.getAge()).setName("stream").setPhone("54687");
                return user01;

            }else {
                user01.setAge(23).setName("5698");
            }

            return user01;

        }).collect(Collectors.toList());    //collect(Collectors里面是对流操作的转换、排序等...),如果不加,就默认返回stream类型;

        System.out.println("s3==========="+s3);
        Stream stream = users.stream();
        Object userList = stream.collect(Collectors.toList());
        List list = (List)userList;
        System.out.println(userList);
        System.out.println(list.get(1));
        list.add(list.size(), new User().setAge(111));
        System.out.println(list);



    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值