函数式编程-基础操作符

基础操作符

终端操作符:forEach

@Slf4j
public class BasicOperatorTests {
  private static final User[] arrayOfUsers = {
        User.builder().id(1L).username("zhangsan").name("张三").enabled(true).mobile("13000000001").build(),
        User.builder().id(2L).username("lisi").name("李四").enabled(false).mobile("13000000002").build(),
        User.builder().id(3L).username("wangwu").name("王五").enabled(true).mobile("13100000000").build(),
    };

    private List<User> userList;

    @BeforeEach
    void setup() {
        userList = Arrays.asList(arrayOfUsers);
    }
	 @Test
    public void forEachStream() {
        userList.stream().forEach(user -> user.setEnabled(true));
        assertTrue(userList.get(1).isEnabled());
    }
   }

findFirst
第一个对象

 @Test
    public void givenUsers_whenMatchUsername_thenFindFirstUsingStream() {
        val first = userList.stream().filter(user -> user.getUsername().equals("lisi"))
                .findFirst();
        assertTrue(first.isPresent());
    }

anyMatch
列表存在某个对象匹配

 @Test
    public void givenUsers_withAnyMatch_thenReturnTrueUsingStream() {
        val existed = userList.stream().anyMatch(user -> user.getMobile().startsWith("130"));
        assertTrue(existed);
    }

allMatch
列表所有对象全部匹配

 @Test
    public void givenUsers_withAllMatch_thenReturnTrueUsingStream() {
        val allMatched = userList.stream().allMatch(user -> user.getMobile().startsWith("130"));
        assertTrue(allMatched);
    }

map
一种对象转换成另一种对象

 @Test
    public void givenUsers_withMap_thenTransformUsingStream() {
        List<UserDTO> userDTOList = userList.stream().map(user -> UserDTO.builder()
                .username(user.getUsername())
                .enabled(user.isEnabled() ? "可用" : "不可用").build()).collect(Collectors.toList());
        assertEquals(3, userDTOList.size());
    }

max/min
排序规则下最大和最小

 @Test
    public void givenUsers_thenTestOtherTerminalOperatorsUsingStream() {
        Optional<User> userMaxUserId = userList.stream().max(Comparator.comparing(User::getId));
        assertTrue(userMaxUserId.isPresent());

        Optional<User> userMinUserId = userList.stream().min(Comparator.comparing(User::getId));
        assertTrue(userMinUserId.isPresent());
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值