Java-List分割工具类

为了实现列表分割功能,以便于后续进行自定义多线程分批执行,我们可以创建一个工具类

ListSplitter,它包含一个静态方法 splitList,该方法接收一个列表和一个批次大小,并返回一个分

割后的列表集合。

import java.util.ArrayList;
import java.util.List;

public class ListSplitter {

    /**
     * 将列表分割成多个批次。
     *
     * @param <E> 列表元素类型
     * @param list 输入的元素列表
     * @param batchSize 批次大小
     * @return 分割后的批次列表
     */
    public static <E> List<List<E>> splitList(List<E> list, int batchSize) {
        List<List<E>> batches = new ArrayList<>();
        for (int i = 0; i < list.size(); i += batchSize) {
            int end = Math.min(i + batchSize, list.size());
            batches.add(new ArrayList<>(list.subList(i, end)));
        }
        return batches;
    }
Java 中有一些工具类可用于分割 List 集合。 `ListSplitter` 类可将列表分割成多个批次。以下是其代码实现: ```java import java.util.ArrayList; import java.util.List; public class ListSplitter { /** * 将列表分割成多个批次。 * * @param <E> 列表元素类型 * @param list 输入的元素列表 * @param batchSize 批次大小 * @return 分割后的批次列表 */ public static <E> List<List<E>> splitList(List<E> list, int batchSize) { List<List<E>> batches = new ArrayList<>(); for (int i = 0; i < list.size(); i += batchSize) { int end = Math.min(i + batchSize, list.size()); batches.add(new ArrayList<>(list.subList(i, end))); } return batches; } } ``` 该类有一个静态方法 `splitList`,它接收一个列表和批次大小作为参数,返回分割后的批次列表 [^2]。 `BatchProcessor` 类也是一个集成批量切割处理工具类,它可以将 List 按指定大小切割并对每个批次进行处理。以下是其代码实现: ```java import java.util.List; public class BatchProcessor<T> { public void processInBatches(List<T> dataList, Consumer<List<T>> batchProcessor, int batchSize) { List<T> batch; for (int i = 0; i < dataList.size(); i += batchSize) { // 截取当前批次的数据 batch = dataList.subList(i, Math.min(i + batchSize, dataList.size())); // 执行单次推送操作(例如网络请求、数据库插入等) batchProcessor.accept(batch); } } // 定义一个函数式接口,用于处理每个批次的数据 @FunctionalInterface public interface Consumer<T> { void accept(T t); } } ``` 使用示例如下: ```java import java.util.List; // 假设 PushHdOrderDTO 类已定义 class PushHdOrderDTO {} public class Main { public static void main(String[] args) { List<PushHdOrderDTO> pushHdOrderDTOS = null; // 初始化列表 BatchProcessor.Consumer<List<PushHdOrderDTO>> pushBatchToServer = list -> { try { // 这里是推送方法 String hdInfo = pushOrder(); } catch (Exception e) { // 假设 log 已正确初始化 java.util.logging.Logger log = java.util.logging.Logger.getLogger(Main.class.getName()); log.severe("同步推送异常"); } }; new BatchProcessor<PushHdOrderDTO>().processInBatches(pushHdOrderDTOS, pushBatchToServer, 10); } private static String pushOrder() { return null; } } ``` 该类通过 `processInBatches` 方法将传入的 List 按指定的 `batchSize` 进行切割,并使用传入的 `batchProcessor` 对每个批次进行处理 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值