Java8 Stream

本文介绍了Java Stream API的基本用法,包括使用foreach遍历列表、去重、映射属性、过滤指定元素以及组合新集合。示例代码展示了如何在实际操作中应用这些方法,帮助读者理解Stream API在处理集合数据时的灵活性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Stream的定义定义和基本概念

学了知识不运用,等于耕地不播种,话不多说,我们开始操作

foreach

foreach直接遍历list

 foreach遍历且去重

 foreach遍历集合中元素的某一属性(配合map)

foreach遍历集合(排除集合中的某一元素)(配合filter)

foreach遍历集合元素中某一元素,组合成新的集合

Map

filter



基础代码模型

public class TestList {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<>();
        list.add(new User(1,"zhangsan1"));
        list.add(new User(2,"zhangsan2"));
        list.add(new User(3,"zhangsan3"));
        list.add(new User(4,"zhangsan4"));
    }
}
//实体类
public class User {
    private int id;
    private String username;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public User(int id, String username) {
        this.id = id;
        this.username = username;
    }
    public User(){}

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                '}';
    }
}

foreach

foreach直接遍历list

list.stream().forEach(System.out::println);//先创建流,再遍历打印

输出结果

User{id=1, username='zhangsan1'}
User{id=2, username='zhangsan2'}
User{id=3, username='zhangsan3'}
User{id=4, username='zhangsan4'}

 foreach遍历且去重

List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
numbers.stream().distinct().forEach(System.out::println);

输出结果

3
2
7
5

 foreach遍历集合中元素的某一属性(配合map)

 list.stream().map(User::getUsername).forEach(System.out::println);

输出结果

zhangsan1
zhangsan2
zhangsan3
zhangsan4

foreach遍历集合(排除集合中的某一元素)(配合filter)

list.stream().filter(User->User.getUsername()!="zhangsan1").forEach(System.out::println);

输出结果

User{id=2, username='zhangsan2'}
User{id=3, username='zhangsan3'}
User{id=4, username='zhangsan4'}

foreach遍历集合元素中某一元素,组合成新的集合

  list.stream().map(User::getUsername).collect(Collectors.toList()).forEach(System.out::println);

输出结果

zhangsan1
zhangsan1
zhangsan2
zhangsan3
zhangsan4

Map

map 方法用于映射每个元素到对应的结果

list.stream().map(user->user.getId()+1);//把list中的每一个元素对应到user或User或任意的变量
list.stream().map(User->User.getId()+1);

输出结果

 

2
3
4
5

filter

filter 方法用于通过设置的条件过滤出元素

List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());//过滤出元素不为空的

输出结果

[abc, bc, efg, abcd, jkl]

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值