欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 實(shí)現(xiàn)將List平均分成若干個(gè)集合

 更新時(shí)間:2020年08月18日 09:11:19   作者:after95  
這篇文章主要介紹了Java 實(shí)現(xiàn)將List平均分成若干個(gè)集合,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

1.初衷是由于調(diào)用銀行接口的批量處理接口時(shí),每次最多只能處理500條數(shù)據(jù),但是當(dāng)數(shù)據(jù)總數(shù)為510條時(shí)。我又不想第一次調(diào)用處理500條,第二次調(diào)用處理10條數(shù)據(jù),我想要的是每次處理255條數(shù)據(jù)。

下面展示的是我的處理方法

2.寫了一個(gè)簡單的ListUtils:

package com.example.springboottest.common.util;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
import com.google.common.collect.Lists;
/**
 * List 工具類
 * @author Neo 
 * @date 2018年4月16日13:13:37
 */
public class ListUtils {
 
  /**
   * 將一個(gè)List均分成n個(gè)list,主要通過偏移量來實(shí)現(xiàn)的
   *
   * @param source 源集合
   * @param limit 最大值
   * @return
   */
  public static <T> List<List<T>> averageAssign(List<T> source, int limit) {
    if (null == source || source.isEmpty()) {
      return Collections.emptyList();
    }
    List<List<T>> result = new ArrayList<>();
    int listCount = (source.size() - 1) / limit + 1;
    int remaider = source.size() % listCount; // (先計(jì)算出余數(shù))
    int number = source.size() / listCount; // 然后是商
    int offset = 0;// 偏移量
    for (int i = 0; i < listCount; i++) {
      List<T> value;
      if (remaider > 0) {
        value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
        remaider--;
        offset++;
      } else {
        value = source.subList(i * number + offset, (i + 1) * number + offset);
      }
      result.add(value);
    }
    return result;
  }
  public static void main(String[] args) {
    List list = new ArrayList();
    for (int i = 0; i < 65; i++) {
      list.add(i);
    }
    List<List> result = averageAssign(list, 15);
    result.forEach(l -> {
      l.forEach(i ->
          System.out.print(i + "\t")
      );
      System.out.println();
    });
    System.out.println("====================================================");
    result = averageAssign(list, 20);
    result.forEach(l -> {
      l.forEach(i ->
          System.out.print(i + "\t")
      );
      System.out.println();
    });
 
    System.out.println("====================================================");
    // Guava 實(shí)現(xiàn)不平均分組
    result = Lists.partition(list ,100);
        result.forEach(l -> {
      l.forEach(i ->
          System.out.print(i + "\t")
      );
      System.out.println();
    });
  }
}

3.展示一下測(cè)試結(jié)果:

補(bǔ)充知識(shí):Java8 Lambda 分割List

我就廢話不多說了,大家還是直接看代碼吧~

/**
 * @author caishen
 * @version 1.0
 * @className CollectionUtils
 * @date 2019/5/23 11:54
 * 自分で書いたコードの各行を擔(dān)當(dāng)する
 * @dis 切割list工具類
 **/
public class CollectionUtils {

  public static <T> List<List<T>> divide(List<T>origin , int size){
    if(Assert.isEmpty(origin)){
      return Collections.emptyList();
    }

    int block = (origin.size() + size -1) / size;
    return IntStream.range(0,block).
        boxed().map(i->{
          int start = i*size;
          int end = Math.min(start + size,origin.size());
          return origin.subList(start,end);
    }).collect(Collectors.toList());
  }

  public static void main(String[] args) {
    System.out.println(divide(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 3));
  }
}

以上這篇Java 實(shí)現(xiàn)將List平均分成若干個(gè)集合就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決springboot項(xiàng)目啟動(dòng)報(bào)錯(cuò)Error creating bean with name dataSourceScriptDatabaseInitializer問題

    解決springboot項(xiàng)目啟動(dòng)報(bào)錯(cuò)Error creating bean with&nb

    這篇文章主要介紹了解決springboot項(xiàng)目啟動(dòng)報(bào)錯(cuò)Error creating bean with name dataSourceScriptDatabaseInitializer問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助
    2024-03-03
  • Java從源碼角度解析SpringMVC執(zhí)行流程

    Java從源碼角度解析SpringMVC執(zhí)行流程

    這篇文章主要介紹了Java從源碼角度解析SpringMVC執(zhí)行流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError

    Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError

    這篇文章主要介紹了Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java編程之繼承問題代碼示例

    Java編程之繼承問題代碼示例

    這篇文章主要介紹了Java編程之繼承問題代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java 數(shù)據(jù)結(jié)構(gòu)之堆的概念與應(yīng)用

    Java 數(shù)據(jù)結(jié)構(gòu)之堆的概念與應(yīng)用

    堆是一顆完全二叉樹,在這棵樹中,所有父節(jié)點(diǎn)都滿足大于等于其子節(jié)點(diǎn)的堆叫大根堆,所有父節(jié)點(diǎn)都滿足小于等于其子節(jié)點(diǎn)的堆叫小根堆,堆雖然是一顆樹,但是通常存放在一個(gè)數(shù)組中,父節(jié)點(diǎn)和孩子節(jié)點(diǎn)的父子關(guān)系通過數(shù)組下標(biāo)來確定
    2021-10-10
  • Java中不定參數(shù)用法小結(jié)

    Java中不定參數(shù)用法小結(jié)

    在Java中,不定參數(shù)是指方法的參數(shù)數(shù)量可以變化的情況,本文主要介紹了Java中不定參數(shù)用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Spring事務(wù)管理中關(guān)于數(shù)據(jù)庫連接池詳解

    Spring事務(wù)管理中關(guān)于數(shù)據(jù)庫連接池詳解

    事務(wù)的作用就是為了保證用戶的每一個(gè)操作都是可靠的,事務(wù)中的每一步操作都必須成功執(zhí)行,只要有發(fā)生異常就 回退到事務(wù)開始未進(jìn)行操作的狀態(tài)。事務(wù)管理是Spring框架中最為常用的功能之一,我們?cè)谑褂肧pring Boot開發(fā)應(yīng)用時(shí),大部分情況下也都需要使用事務(wù)
    2022-12-12
  • Netty分布式客戶端處理接入事件handle源碼解析

    Netty分布式客戶端處理接入事件handle源碼解析

    這篇文章主要為大家介紹了Netty源碼分析客戶端流程處理接入事件handle創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 一篇文章帶你了解MySQL數(shù)據(jù)庫基礎(chǔ)

    一篇文章帶你了解MySQL數(shù)據(jù)庫基礎(chǔ)

    這篇文章主要介紹了MySql數(shù)據(jù)庫基礎(chǔ)知識(shí)點(diǎn),總結(jié)整理了mysql數(shù)據(jù)庫基本創(chuàng)建、查看、選擇、刪除以及數(shù)據(jù)類型相關(guān)操作技巧,需要的朋友可以參考下
    2021-08-08
  • 利用Java+MySQL實(shí)現(xiàn)附近功能實(shí)例

    利用Java+MySQL實(shí)現(xiàn)附近功能實(shí)例

    現(xiàn)在很多手機(jī)軟件都用附近搜索功能,但具體是怎么實(shí)現(xiàn)的呢?下面這篇文章就來給大家介紹關(guān)于利用Java+MySQL實(shí)現(xiàn)附近功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12

最新評(píng)論