List集合按数量分组

转载 2016年05月31日 17:46:41
import java.util.ArrayList;
import java.util.List;

public class CollectionGroupUtil {
    
    public static List groupListByQuantity(List list, int quantity) {
        if (list == null || list.size() == 0) {
            return list;
        }
        
        if (quantity <= 0) {
            new IllegalArgumentException("Wrong quantity.");
        }
        
        List wrapList = new ArrayList();
        int count = 0;
        while (count < list.size()) {
            wrapList.add(list.subList(count, (count + quantity) > list.size() ? list.size() : count + quantity));
            count += quantity;
        }
        
        return wrapList;
    }
    
}


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

import org.junit.Test;


public class CollectionGroupUtilTest {
    
    /**
     * 大于分组数量的情况
     */
    @Test
    public void test() {
        List<String> allList = new ArrayList<String>();
        for (int i = 1; i <= 504; i++) {
            allList.add(i  + "");
        }
        
        List<List<String>> groupList = CollectionGroupUtil.groupListByQuantity(allList, 50);
        int i = 0;
        List<String> list = null;
        for (int c = 0; c < groupList.size(); c++) {
            list = groupList.get(c);
            
            System.out.println("第" + (c + 1) + "组: ");
            for (String temp : list) {
                System.out.print(temp + ", ");
            }
            System.out.println();
        }
    }

    /**
     * 小于分组数量的情况
     */
    @Test
    public void test2() {
        List<String> allList = new ArrayList<String>();
        for (int i = 1; i <= 45; i++) {
            allList.add(i  + "");
        }
        
        List<List<String>> groupList = CollectionGroupUtil.groupListByQuantity(allList, 50);
        int i = 0;
        List<String> list = null;
        for (int c = 0; c < groupList.size(); c++) {
            list = groupList.get(c);
            
            System.out.println("第" + (c + 1) + "组: ");
            for (String temp : list) {
                System.out.print(temp + ", ");
            }
            System.out.println();
        }
    }
    
    /**
     * 集合只有一个记录的情况
     */
    @Test
    public void test3() {
        List<String> allList = new ArrayList<String>();
        for (int i = 1; i <= 1; i++) {
            allList.add(i  + "");
        }
        
        List<List<String>> groupList = CollectionGroupUtil.groupListByQuantity(allList, 50);
        int i = 0;
        List<String> list = null;
        for (int c = 0; c < groupList.size(); c++) {
            list = groupList.get(c);
            
            System.out.println("第" + (c + 1) + "组: ");
            for (String temp : list) {
                System.out.print(temp + ", ");
            }
            System.out.println();
        }
    }
    
    /**
     * 空集合的情况
     */
    @Test
    public void test4() {
        List<List<String>> groupList = CollectionGroupUtil.groupListByQuantity(null, 50);
        System.out.println(groupList);
        
        groupList = CollectionGroupUtil.groupListByQuantity(new ArrayList(), 50);
        System.out.println(groupList);
    }
    
    /**
     * 集合刚满一个分组的情况
     */
    @Test
    public void test5() {
        List<String> allList = new ArrayList<String>();
        for (int i = 1; i <= 50; i++) {
            allList.add(i  + "");
        }
        
        List<List<String>> groupList = CollectionGroupUtil.groupListByQuantity(allList, 50);
        int i = 0;
        List<String> list = null;
        for (int c = 0; c < groupList.size(); c++) {
            list = groupList.get(c);
            
            System.out.println("第" + (c + 1) + "组: ");
            for (String temp : list) {
                System.out.print(temp + ", ");
            }
            System.out.println();
        }
    }
    
}


java 将list按照指定数量分成小list

1、自己编写相关代码: 2、使用guava: import java.util.ArrayList; import java.util.List; import com.googl...
  • liuxiao723846
  • liuxiao723846
  • 2017年07月21日 19:09
  • 1857

java集合list中的数据按照多个属性分组

java集合list中的数据按照多个属性分组
  • liuxiao723846
  • liuxiao723846
  • 2015年06月16日 16:35
  • 3441

List模仿SQL的group by分组

自己写的,模仿了SQL的group by分组 博客分类:  Java Basic SQLApache  在一次的项目上,为了避免客户端进行数据库查询,而且客户端操作的这些数...
  • evilcry2012
  • evilcry2012
  • 2016年09月30日 08:59
  • 1321

java中使用containsKey实现的group by功能

containsKey:当且仅当此映射包含针对满足 (key==null ? k==null : key.equals(k)) 的键 k 的映射关系时,返回 true。...
  • qiaoshuai0920
  • qiaoshuai0920
  • 2016年05月21日 10:05
  • 3514

Java实现GroupBy/分组TopN功能

介绍在Java 8 的Lambda(stream)之前,要在Java代码中实现类似SQL中的group by分组聚合功能,还是比较困难的。这之前Java对函数式编程支持不是很好,Scala则把函数式编...
  • bingduanlbd
  • bingduanlbd
  • 2016年07月21日 22:15
  • 4565

JAVA 集合 List 分组的两种方法

http://blog.csdn.net/yangxiaojun9238/article/details/515009341.工具类import java.lang.reflect.Method; i...
  • qq_31179919
  • qq_31179919
  • 2017年10月27日 14:22
  • 81

JAVA 集合 List 分组的两种方法

从网上找了两种方法,效率差不多,这里贴出代码供大家参考 实体类Data public class Data { private Long id ; private Long ...
  • yangxiaojun9238
  • yangxiaojun9238
  • 2016年05月25日 19:25
  • 12351

java中对list集合中的数据按照某一个属性进行分组

java list分组。 list里面封装的都是实体对象或Map,现要按照对象的某个属性进行分组。...
  • liuxiao723846
  • liuxiao723846
  • 2015年06月16日 15:26
  • 13724

List分组拆分

public static void main(String[] args) { List list = new ArrayList(); list.add("1567...
  • pasken
  • pasken
  • 2016年12月23日 14:46
  • 771

【java】将List中的实体按照某个字段进行分组的算法

使用语言:JAVA 如何将List中存放的实体按照某个字段进行分组呢?来看看下面的例子,假如实体中有个字段叫批次号,我们将具有相同批次号的实体放在一起,那么怎么实现呢?看下面的代码: ...
  • coolcoffee168
  • coolcoffee168
  • 2016年10月18日 09:09
  • 9113
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:List集合按数量分组
举报原因:
原因补充:

(最多只允许输入30个字)