list分段截取方法

news2024/12/23 23:06:39

 对list 分段截取方法是一个常见的操作,通常用于对list数据批量操作,常见的场景有返回分页展示数据,对大数据进行分批次插入数据库等

package com.hmdp.dto;

import org.apache.commons.collections4.ListUtils;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.util.Arrays;
import java.util.List;

/**
 * @Author: ldj
 * @Date: 2023/06/19/16:34
 * @Description: 对list分段截取
 */
public class Tr {
    public static void main(String[] args) throws ParseException {
        List<String> list = Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i");
        Tr.subList1(list);
        Tr.subList2(list);
        Tr.subList3(list);
        Tr.subList4(list); //推荐

        System.out.println(Math.min(3, 2));
    }


    public static void subList1(List<String> list) {
        long beginTime = System.currentTimeMillis();
        if (StringUtils.isEmpty(list)) {
            return;
        }

        int beginIndex = 0;
        int subSize = 2;
        List<String> arrayList = null;

        while (beginIndex < list.size()) {
            if (beginIndex + subSize < list.size()) {
                arrayList = list.subList(beginIndex, beginIndex + subSize);
            } else {
                arrayList = list.subList(beginIndex, list.size());
            }
            beginIndex += subSize;
            System.out.println(arrayList);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("subList1 cost time:" + (endTime - beginTime));
    }

    //方法2快一丢丢
    public static void subList2(List<String> list) {
        long beginTime = System.currentTimeMillis();
        if (StringUtils.isEmpty(list)) {
            return;
        }

        int beginIndex = 0;
        int subSize = 2;
        List<String> arrayList = null;

        if (list.size() % subSize == 0) {
            int size = list.size() / subSize;
            for (int i = 0; i < size; i++) {
                arrayList = list.subList(beginIndex, beginIndex + subSize);
                beginIndex = beginIndex + subSize;
                System.out.println(arrayList);
            }
        }

        if (list.size() % subSize > 0) {
            int size = list.size() / subSize;
            for (int i = 0; i < size; i++) {
                arrayList = list.subList(beginIndex, beginIndex + subSize);
                beginIndex = beginIndex + subSize;
                System.out.println(arrayList);
            }
            arrayList = list.subList(beginIndex, list.size());
            System.out.println(arrayList);
        }

        long endTime = System.currentTimeMillis();
        System.out.println("subList2 cost time:" + (endTime - beginTime));
    }


    /**
     * <dependency>
     * <groupId>org.apache.commons</groupId>
     * <artifactId>commons-collections4</artifactId>
     * <version>4.4</version>
     * </dependency>
     */
    public static void subList3(List<String> list) {
        long beginTime = System.currentTimeMillis();

        List<List<String>> partitions = ListUtils.partition(list, 2);
        partitions.forEach(partition -> {
            System.out.println(partition);
        });
        long endTime = System.currentTimeMillis();
        System.out.println("subList3 cost time:" + (endTime - beginTime));
    }

    public static void subList4(List<String> list) {
        long beginTime = System.currentTimeMillis();
        List<String> arrayList = null;
        int subSize = 2;
        for (int beginIndex = 0; beginIndex < list.size(); beginIndex += subSize) {
            int endIndex = Math.min(beginIndex + subSize, list.size());
            arrayList = list.subList(beginIndex, endIndex);
            System.out.println(arrayList);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("subList4 cost time:" + (endTime - beginTime));
    }
    
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/745394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang学习——string和slice切片

Golang学习——string和slice切片 string整数存储字符存储Unicode存储变长编码规则字符串类型变量的结构字符串变量的修改方式 slice通过make的方式定义变量new底层数组slice扩容规则1.预估扩容后的容量newCap2.newCap个元素需多大内存3.匹配到合适的内存规格练习 string 整数…

如何进行高效的日程管理?

在日程安排逐渐增多的现代职场中&#xff0c;如果想要高效完成工作事项&#xff0c;就必须做好每天的日常管理。但是有不少上班族表示自己在做日程管理时往往感到力不从心&#xff0c;很难做到真正有效的管理自己的日程安排&#xff0c;那么问如何进行高效的日程管理呢&#xf…

利用Python数据挖掘技术深入理解股票回撤的本质

股票回撤是投资者关注的一个重要指标&#xff0c;也是进行风险评估和投资决策的必要依据。通过利用Python数据挖掘技术深入理解股票回撤的本质&#xff0c;可以更加准确地评估风险和制定投资策略。 一、什么是股票回撤 股票回撤是指股票价格在上涨过程中出现暂时的下跌&#…

2023开放式蓝牙耳机推荐,开放式耳机如何选购?十五款开放式耳机一文看到底!

最近发现网上很多小伙伴在挑选开放式蓝牙耳机&#xff0c;也看到很多开放式耳机的评测文章&#xff0c;五花八门&#xff0c;各式各样&#xff0c;导致很多小伙伴想挑选一款好用的开放式耳机&#xff0c;却又怕踩雷&#xff01; 那么问题来了&#xff01;怎样选择一款合适的开…

代码随想录二刷 day48 |动态规划之 198打家劫舍 213打家劫舍II 337打家劫舍III

day48 198.打家劫舍1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组 213.打家劫舍II情况一&#xff1a;考虑不包含首尾元素情况二&#xff1a;考虑包含首元素&#xff0c;不包含尾元素情况三&…

在培训班里学技术,真的有用吗?

在培训班里学技术&#xff0c;真的有用吗&#xff1f; &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑&#xff0c;欢迎随时来交流哦&…

打印机从0到入门

一.连接 1.USB连接方式 2.网络打印服务器连接方式 使用打印服务器可以将不能联网的打印机设置为同一网段下的主机均可使用&#xff0c;有的打印服务器也可跨网段连接。 二.共享 不同终端处于同个网络下&#xff0c;主机网络通信通过WIFI连接&#xff08;打印机连接的主机通…

2023最新 Navicat 16.2.3 安装和试用教程详解

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

四个按键控制led的四种变化(按键控制led)(附源码)

文章目录 一、实验任务二、系统框图三、代码实现四、引脚分配五、总结 一、实验任务 使用开发板上的四个按键控制四个LED灯。按下不同的按键时&#xff0c;四个LED灯显示不同效果。本实验是在EP4CE6F17C8开发板上实现&#xff0c;仿真请用modelsim Altera 二、系统框图 三、代…

23 分页控件

文章目录 界面设置初始化主对话框子页面初始化 页面1枚举窗口页面2枚举进程全部代码 界面设置 ui 设置 >创建CTablCtrl > 创建页控件&#xff08;子窗口&#xff09;&#xff0c;style设置成为chlid 添加类 页面中加入listCtrl 控件 添加变量 分别添加初始化函数 初始化…

3ds Max 建模基础教程:创建棕榈植物

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 嘿伙计们&#xff0c;在本教程中&#xff0c;我们将学习如何使用其花盆创建棕榈植物&#xff0c;首先我们将对花盆进行建模&#xff0c;然后设置叶子和纹理&#xff0c;我从谷歌搜索中找到了纹理&#xff0…

常用的k8s管理命令

Kubernetes 是一个由主节点和工作节点组成的容器编排工具。它只允许通过作为控制平面核心组件的 API 服务器进行通信。API 服务器公开了一个 HTTP REST API&#xff0c;允许内部组件&#xff08;如用户和集群&#xff09;和外部组件之间的通信。 你可以将 API 服务器视为 Kuber…

RestClient操作索引库

一、初始化RestClient 分为三步&#xff1a; 1&#xff09;引入es的RestHighLevelClient依赖&#xff1a; <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dep…

字节面试:连接一个不存在的 IP 地址,会发生什么?

分享两个字节面试题&#xff0c;都是基于场景问的网络问题。 Q1&#xff1a;客户端连接一个不存在的 IP 地址&#xff0c;会发生什么&#xff1f; Q2&#xff1a;客户端连接一个存在的 IP 地址但是端口不存在&#xff0c;会发生什么&#xff1f; PS&#xff1a;这里的「连接…

leetcode:2395. 和相等的子数组(python3解法)

难度&#xff1a;简单 给你一个下标从 0 开始的整数数组 nums &#xff0c;判断是否存在 两个 长度为 2 的子数组且它们的 和 相等。注意&#xff0c;这两个子数组起始位置的下标必须 不相同 。 如果这样的子数组存在&#xff0c;请返回 true&#xff0c;否则返回 false 。 子数…

快消品行业企业如何选择适合自己的订单管理系统源码

快消品行业企业在选择适合自己的订单管理系统源码时&#xff0c;需要考虑以下五个方面&#xff1a; 首先&#xff0c;企业需要考虑订单管理系统的功能是否能够满足自身的需求。订单管理系统应该具备订单录入、订单查询、订单处理、订单跟踪、进销存管理、临期提醒等基本功能&am…

创业大赛,助力AI创业团队加速发展

AI产业投资人认为&#xff0c;参加AI大模型大赛的企业&#xff0c;无论是大厂还是创业团队&#xff0c;在技术、资本和产品等方面都面临全方位的竞争。特别对于创业团队而言&#xff0c;早期的问题是缺乏资金和技术支持&#xff0c;这让很多创业团队犹豫不决。 大型模型的研发…

2.MySQL- Linux 常见指令

目录 回顾&#xff1a;Linux 常见命令 一、创建目录 make directory (mkdir) 二、创建一个空白的文本文件 (touch) 练习 三、查看文本文件内容相关的指令&#xff08;cat head tile...&#xff09; 3.1 cat 3.2 head & tail 3.3 wc -l 3.4 grep 3.5 less & …

电脑城要倒闭?“泰酷辣”

电脑城要倒闭&#xff1f;“泰酷辣” &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑&#xff0c;欢迎随时来交流哦&#xff01;&#x1…

走进Linux世界【一、Linux概述】

第一章 Linux概述 1、操作系统 ​ 定义&#xff1a;操作系统(Operating System&#xff0c;简称OS)是管理计算机硬件与软件资源的计算机程序 ​ 作用&#xff1a;是把计算机系统中对硬件设备的操作封装起来&#xff0c;供应用软件调用&#xff0c;也是提供一个让用户与系统交…