大集合拆分成多个小集合

这篇具有很好参考价值的文章主要介绍了大集合拆分成多个小集合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 场景

在数据库批量操作时,有可能数据量过大,不能一次性操作,所以需要将大集合拆分为多个小集合进行多次操作文章来源地址https://www.toymoban.com/news/detail-669781.html

2. 拆分集合方法(写了三种)

import com.google.common.collect.Lists;
import com.xin.demo.fastjsondemo.FastJsonFormatPrintUtils;
import org.apache.commons.collections4.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class PartitionListDemo {

    private static final int PARTITION_SIZE = 10;
    
    public static void main(String[] args) {

        // 大集合
        List<String> list = new ArrayList<>();
        for (int i = 0; i < 33; i++) {
            list.add("xinliushijian" + i);
        }

        // 方法1 guava工具
        List<List<String>> partitionList = Lists.partition(list, PARTITION_SIZE);
        FastJsonFormatPrintUtils.formatPrint(partitionList);
        System.out.println("===============");

        // 方法2 stream流实现
        List<List<String>> partitionList1 = partList1(list, PARTITION_SIZE);
        FastJsonFormatPrintUtils.formatPrint(partitionList1);

        // 方法3 普通方法实现
        partList2(list, PARTITION_SIZE);
    }

    public static <T> List<List<T>> partList1(List<T> list, int size) {
        if (CollectionUtils.isEmpty(list) || size < 1) {
            return new ArrayList<>();
        }

        List<List<T>> partList = IntStream.range(0, list.size())
                .boxed()
                .collect(Collectors.groupingBy(index -> index / size))
                .values()
                .stream()
                .map(indices -> indices.stream().map(list::get).collect(Collectors.toList()))
                .collect(Collectors.toList());

        return partList;
    }

    public static <T> List<List<T>> partList2(List<T> list, int size) {
        if (CollectionUtils.isEmpty(list) || size < 1) {
            return new ArrayList<>();
        }

        List<List<T>> allPartList = new ArrayList<>();

        for (int i = 0; i < list.size(); i+=size) {
            if (i + size > list.size()) {
                size  = list.size() - i;
            }

            List<T> parList = list.subList(i, i + size);
            allPartList.add(parList);
        }
        FastJsonFormatPrintUtils.formatPrint(allPartList);

        return allPartList;
    }

}

3. 格式化打印方法

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.JSON;

public class FastJsonFormatPrintUtils {
    public static void formatPrint(Object object) {
        String pretty = JSON.toJSONString(object, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteDateUseDateFormat);

        System.out.println(pretty);
    }

}

到了这里,关于大集合拆分成多个小集合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java基础知识梳理

    虽然已经在实际工作中与java打交道5年之多,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。拉

    2024年02月04日
    浏览(65)
  • java基础知识二

    1.1、基本概念 类是具有相同属性和行为的一组对象的 集合 ,包含数据和操作,数据被称为 成员变量 ,操作被称为方法 对象是类的实例,即 对象 = 数据 + 行为 或者 对象 = 状态 + 操作 类抽象的、概念上的定义,对象是一个具体的、实际存在的个体,即一个实例 1.2、类的特

    2024年02月07日
    浏览(59)
  • Java中常量基础知识

    什么是字面常量? 拿第一行输出语句来说,这行代码输出了 “hello” 这个字符串,无论何时何地运行程序,输出的这个字符串都不会变,这就是字面常量。 定义:常量即程序运行期间,固定不变的量称为常量。 package ht; public class ht1 {    public static void main(String[] args) {    

    2024年02月06日
    浏览(49)
  • Java ---基础知识& 期末复习

    1.Java是低级语言还是 高级语言    答:高级语言。 2.Java是面向对象的程序设计语言吗 答:是。 3. Java是编译型的计算机语言还是解释型的计算机语言。 答: 一种说法:Java是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就无法执行。 另一种说法:Java是解释型

    2024年01月16日
    浏览(62)
  • Java GC基础知识

    在对象中添加一个 引用计数器 ,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可 能再被使用的 引用计数法的缺陷: 如果使用 引用计数法 , objA 和 objB 除互相引用外没有任何其他引用,但是无法被回收。

    2023年04月13日
    浏览(70)
  • java基础知识——25.异常

    这篇文章,我们来讲一下java的异常体系 目录 1.异常概述 2 java的异常继承体系 2.1 编译时异常 2.2 运行时异常 2.3 底层原理 2.4 异常的作用 3.异常的处理方式 3.1 JVM默认的处理方式 3.2 自己处理(捕获异常) 3.2.1自己处理的4个问题 3.2.2 异常中的常见方法 3.3 抛出处理 3.3.1 throws

    2024年02月01日
    浏览(54)
  • Java基础知识篇——Java基本介绍

    Java 是 Sun Microsystems 于 1995 年首次发布的一种 编程语言 和计算平台。编程语言还是比较好理解的,什么是 计算平台 呢? 计算平台是电脑中运行应用程序(软件的环境),包括硬件环境和软件环境。一般系统平台包括一台电脑的硬件体系结构,操作系统、运行时库。 Java 是快

    2024年03月11日
    浏览(50)
  • Java 基础知识点

    Object 类相关方法   getClass 获取当前运行时对象的 Class 对象。 hashCode 返回对象的 hash 码。 clone 拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝引用;深拷贝对基本类型进行值拷贝,对引用类型对象不但拷贝对象的引用还拷贝对象的相

    2024年02月13日
    浏览(64)
  • Java基础入门知识

    以下是学习java必备的知识 目录 前言 一、Java入门 二、基本数据类型与数组 标识符与 2. 基本数据类型 3. 类型转换运算 4. 运算符 5. 数组 6.控制结构(与c使用一致) 总结 Java语言是面向对象编程语言,编写的软件与平台无关。具有语法简单、面向对象、稳定、与平台无

    2024年02月16日
    浏览(67)
  • Java基础知识篇02——封装

    大家好,我是白夜,今天给大家聊聊面向对象的三大特征——封装 先来看看我们之前写的代码结构 以上代码存在的问题 所有类写在一个目录下面,非常难管理,因为以后项目不可能只有这么几个类,当类数量很大的时候,就不容易管理了。 不能写同名但是不同需求的类。

    2024年04月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包