jdk1.8常用方法

本文详细介绍并演示了 Java 8 中引入的重要新特性,包括流API的使用,如过滤、映射、排序、去重、聚合操作及复杂查询等。通过实际代码展示了如何利用这些特性简化集合操作,提高开发效率。

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

package com.conpany.project;

import java.util.Comparator;
import java.util.Date;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.fastjson.JSONArray;
import com.company.project.dao.UserMapper;
import com.company.project.domain.User;
import com.company.project.domain.UserExample;

/**
 * 1.8新特性
 */
public class TestJdk extends Tester {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test() {

        UserExample userExample = new UserExample();
        List<User> list = userMapper.selectByExample(userExample);
        // 根据某个条件进行过滤filter()
        List<User> collect = list.stream().filter(item -> item.getSex().equals(1)).collect(Collectors.toList());

        // 根据list集合某个字段组装新的list
        List<Integer> integerList = list.stream().map(item -> item.getId()).collect(Collectors.toList());

        // 去重distinct
        List<User> collect1 = list.stream().distinct().collect(Collectors.toList());

        // 单字段排序sort 正序
        list.sort(Comparator.comparing(User::getId));
        // 多条件排序
        list.sort(Comparator.comparing(User::getId).thenComparing(User::getSex));
        // 倒叙
        list.sort(Comparator.comparing(User::getId).reversed());
        // 多条件排序(倒叙)
        list.sort(Comparator.comparing(User::getId).thenComparing(User::getSex).reversed());

        // list转map
        Map<String, User> collect2 =
                list.stream().collect(Collectors.toMap(User::getNickName, item -> item, (t1, t2) -> t1));

        // 求和
        int sum = list.stream().mapToInt(User::getSex).sum();

        // 数量计算(返回count,sum,min,max)
        IntSummaryStatistics intSummaryStatistics = list.stream().mapToInt(item -> item.getSex()).summaryStatistics();

        // 最小时间
        Date minDate = list.stream().map(User::getRegisterDate).min(Date::compareTo).get();
        // 最大时间
        Date maxDate = list.stream().map(User::getRegisterDate).max(Date::compareTo).get();

        // 最大值(可以获取对象,也可以获取最大值字段)
        Integer maxId = list.stream().max(Comparator.comparingInt(User::getId)).get().getId();
        // 最小值
        User minUser = list.stream().min(Comparator.comparingInt(User::getId)).get();
        System.err.print(list);
        // 根据指定字段进行分组(Collectors.groupingBy())
        Map<String, List<User>> gr =
                list.stream().collect(Collectors.groupingBy(User::getNickName));
        Object toJSON = null;
        for (Map.Entry<String, List<User>> listEntry : gr.entrySet()) {
            // String status = listEntry.getKey();
            List<User> listEntryValue = listEntry.getValue();
            toJSON = JSONArray.toJSON(listEntryValue);

        }
        System.err.print(list);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭优秀的笔记

你的支持就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值