Hutool的CollStreamUtil

Hutool的Java8的Stream进行了封装

package com.fayi.hutool;

import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.*;

public class CollStreamUtilTest {
    private static final ArrayList<Student> students;

    static {
        students = CollUtil.newArrayList(
                new Student(1, "刘备", "三国", "编筐"),
                new Student(2, "关羽", "三国", "耍大刀"),
                new Student(3, "张飞", "三国", "喝酒"),
                new Student(4, "悟空", "西游", "吃桃"),
                new Student(5, "八戒", "西游", "喝酒"),
                new Student(6, "沙僧", "西游", "编筐")
        );
    }

    public static void main(String[] args) {
        // 1.把班级里面所有学生名称转成一个list
        convertNameToList();
        // 2.把班级里面所有学生老家转成一个set
        convertNameToSet();
        // 3.建立一个key为学生id, value为学生对象的map
        convertToMapByIdAndBean();
        // 4.建立一个key为学生id, value为学生姓名的map
        convertToMapByIdAndName();
        // 5.将学生按照学生老家分组, value为List类型的学生对象集合
        convertToMapGroupByHomeTown();
        // 6.将学生按照学生老家分组, value为List类型的学生名称集合
        convertToMapGroupByHomeTownAndName();
        // 7.将学生先按照学生爱好分组, 再按照学生老家分组, value为List对象
        convertToMapGroupByLikeThenHomeTown();
        // 8.将学生先按照学生爱好分组, 再按照学生老家分组, value为单个学生对象
        convertTo2MapGroupByLikeAndHomeTown();


    }

    private static void convertTo2MapGroupByLikeAndHomeTown() {
        // 传统实现方式
        Map<String,Map<String, Student>> oldMap = MapUtil.newHashMap();
        for (Student student : students) {
            String like = student.getLike();
            Map<String, Student> likeMap = oldMap.get(like);
            if (likeMap == null){
                likeMap = MapUtil.newHashMap();
                oldMap.put(like,likeMap);
            }
            likeMap.put(student.getHomeTown(),student);
            oldMap.put(student.getLike(),likeMap);
        }
        System.out.println(oldMap);
        // 使用封装好的 CollStreamUtil
        Map<String, Map<String, Student>> map = CollStreamUtil.group2Map(students, Student::getLike, Student::getHomeTown);
        System.out.println(map);
    }

    private static void convertToMapGroupByLikeThenHomeTown() {
        // 传统实现方式
        Map<String, Map<String, List<Student>>>  oldMap = MapUtil.newHashMap();
        for (Student student : students) {
            String like = student.getLike();
            Map<String, List<Student>> likeMap = oldMap.get(like);
            if (likeMap == null) {
                likeMap = MapUtil.newHashMap();
                oldMap.put(like,likeMap);
            }
            oldMap.put(student.getLike(),likeMap);
            String homeTown = student.getHomeTown();
            List<Student> studentList = likeMap.get(homeTown);
            if (studentList == null){
                studentList = new ArrayList<>();
                likeMap.put(homeTown,studentList);
            }
            studentList.add(student);

        }
        System.out.println(oldMap);
        // 使用封装好的 CollStreamUtil
        Map<String, Map<String, List<Student>>> map = CollStreamUtil.groupBy2Key(students, Student::getLike,Student::getHomeTown);
        System.out.println(map);
    }

    private static void convertToMapGroupByHomeTownAndName() {
        // 传统实现方式
        Map<String, List<String>> oldMap = MapUtil.newHashMap();
        for (Student student : students) {
            String homeTown = student.getHomeTown();
            List<String> studentList = oldMap.get(homeTown);
            if (studentList == null) {
                studentList = new ArrayList<>();
                oldMap.put(homeTown,studentList);
            }
            studentList.add(student.getName());
        }
        System.out.println(oldMap);
        // 使用封装好的 CollStreamUtil
        Map<String, List<String>> map = CollStreamUtil.groupKeyValue(students, Student::getHomeTown,Student::getName);
        System.out.println(map);
    }

    private static void convertToMapGroupByHomeTown() {
        // 传统实现方式
        Map<String, List<Student>> oldMap = MapUtil.newHashMap();
        for (Student student : students) {
            String homeTown = student.getHomeTown();
            List<Student> studentList = oldMap.get(homeTown);
            if (studentList == null) {
                studentList = new ArrayList<>();
                oldMap.put(homeTown,studentList);
            }
            studentList.add(student);
        }
        System.out.println(oldMap);
        // 使用封装好的 CollStreamUtil
        Map<String, List<Student>> map = CollStreamUtil.groupByKey(students, Student::getHomeTown);
        System.out.println(map);
    }

    private static void convertToMapByIdAndName() {
        // 传统实现方式
        Map<Integer, String> oldMap = MapUtil.newHashMap();
        for (Student student : students) {
            oldMap.put(student.getId(), student.getName());
        }
        System.out.println(oldMap);
        // 使用封装好的 CollStreamUtil
        Map<Integer, String> map = CollStreamUtil.toMap(students, Student::getId, Student::getName);
        System.out.println(map);
    }

    private static void convertToMapByIdAndBean() {
        // 传统实现方式
        Map<Integer, Student> oldMap = MapUtil.newHashMap();
        for (Student student : students) {
            oldMap.put(student.getId(), student);
        }
        System.out.println(oldMap);
        // 使用封装好的 CollStreamUtil
        Map<Integer, Student> map = CollStreamUtil.toIdentityMap(students, Student::getId);
        System.out.println(map);

    }

    private static void convertNameToList() {
        // 传统实现方式
        List<String> oldNames = CollUtil.newArrayList();
        for (Student student : students) {
            oldNames.add(student.getName());
        }
        System.out.println(oldNames);
        // 使用封装好的 CollStreamUtil
        List<String> collStreamNames = CollStreamUtil.toList(students, Student::getName);
        System.out.println(collStreamNames);
    }

    private static void convertNameToSet() {
        // 传统实现方式
        Set<String> oldNames = CollUtil.newHashSet();
        for (Student student : students) {
            oldNames.add(student.getHomeTown());
        }
        System.out.println(oldNames);
        // 使用封装好的 CollStreamUtil
        Set<String> collStreamNames = CollStreamUtil.toSet(students, Student::getHomeTown);
        System.out.println(collStreamNames);
    }
}

@AllArgsConstructor
@NoArgsConstructor
@Data
class Student {
    private Integer id;
    private String name;
    private String homeTown;
    private String like;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值