Java中Stream流的一些操作

Java中的stream()流是一种新的API,它提供了一种高效且易于理解的方式来处理数据。

stream()流可以从集合、数组或I/O通道创建。一旦创建,stream()流就可以使用各种操作进行转换和过滤,最后收集到一个结果集合中。

下面是使用stream()流的例子:

package com.dy.revise;

import com.dy.domain.User;

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

public class ListStream {
    public static void main(String[] args) {
        List<User> userList = getUserList();
        test(userList);
    }

    public static List<User> getUserList() {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "Jack", 18));
        userList.add(new User(2, "Jane", 17));
        userList.add(new User(3, "Tao", 16));
        userList.add(new User(4, "Geng", 13));
        userList.add(new User(5, "Shun", 66));
        return userList;
    }

    public static void test(List<User> userList) {
        // 遍历
        userList.forEach(e -> System.out.println("测试 test ===>>>" + e.toString()));
        // 过滤
        List<User> filterUsers = userList.stream().filter(user -> user.getAge() >= 18).collect(Collectors.toList());
        System.out.println("过滤用户: " + filterUsers);
        // 获取目标用户名称--map重组(先过滤再获取姓名集合)
        List<String> userNameList = userList.stream().filter(e -> e.getId() >= 3).map(User::getUserName).collect(Collectors.toList());
        System.out.println("获取用户名: " + userNameList);
        // 按照年龄递增
        List<User> sortUserList = userList.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
        System.out.println("排序用户:" + sortUserList);
        Collections.reverse(sortUserList);
        System.out.println("排序-翻转用户: " + sortUserList);
        // 年龄最大的用户
        Optional<User> max = userList.stream().max(Comparator.comparing(User::getAge));
        if (max.isPresent()) {
            User maxAgeUser = max.get();
            System.out.println("年龄最大的用户: " + maxAgeUser);
        }
        // 根据ID转map,map的key为id
        Map<Integer, User> mapUser = userList.stream().collect(Collectors.toMap(User::getId, userItem -> userItem));
        System.out.println("list转map: " + mapUser);
        // 以ID分组
        Map<Integer, List<User>> mapUserList = userList.stream().collect(Collectors.groupingBy(User::getId));
        System.out.println("使用用户ID分组:" + mapUserList);
    }
}

Stream流的常用方法大全

STM32是一款嵌入式芯片,在嵌入式系统中,Flash是一种存储器件,用来存储程序。STM32可以读写Flash,让我们能够修改程序,实现芯片控制。 STM32芯片内部的Flash分为两种:一种是Main Flash,还有一种是System Flash。其中,Main Flash主要用来存放应用程序,而System Flash则保存了一些系统信息,比如Bootloader。 使用STM32读写Flash需要多个步骤。首先,需要进行初始化。初始化代码如下: HAL_FLASH_Unlock(); flash_erase_init.TypeErase = FLASH_TYPEERASE_PAGES; flash_erase_init.PageAddress = ADDRESS; flash_erase_init.NbPages = 1; HAL_FLASHEx_Erase(&flash_erase_init, &PAGE_ERROR); HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, ADDRESS, DATA); HAL_FLASH_Lock(); 其中,HAL_FLASH_Unlock()和HAL_FLASH_Lock()函数用来对Flash进行解锁和锁定操作。 其次,需要擦除Flash,该步骤是很重要的,因为Flash是有限制次数的,反复写入易造成擦除的次数过多,缩短Flash寿命。程序如上: flash_erase_init.TypeErase = FLASH_TYPEERASE_PAGES; flash_erase_init.PageAddress = ADDRESS; flash_erase_init.NbPages = 1; HAL_FLASHEx_Erase(&flash_erase_init, &PAGE_ERROR); 上述程序代码指定了FLASH_TYPEERASE_PAGES为扇区擦除,擦除起始地址ADDRESS,并指定擦除扇区数为1。 然后,使用HAL_FLASH_Program函数向Flash写入数据,程序如下: HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, ADDRESS, DATA); 该函数参数分别代表 需要向Flash写入的数据、Flash地址和写入操作方式等。 最后,需要做好Flash的锁定防止外部因素对Flash的更改操作,使用的函数和解锁步骤相同。程序如下: HAL_FLASH_Lock(); 总的来说,STM32读写Flash的操作需要进行初始化,擦除Flash,向Flash写入数据,并锁定防止外部更改。这些步骤需要仔细核实,但是一旦操作成功,便可以实现 STM32 上关键性的程序修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值