欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA List和Map切割工具详解

程序员文章站 2022-07-08 22:34:42
使用php开发的同学都知道array_chunk函数,其作用是将数据进行切割分段,但是在 java中却找不到合适的给list和map分段的函数。在此我写了一个切割工具,分享一下import org.s...

使用php开发的同学都知道array_chunk函数,其作用是将数据进行切割分段,但是在 java中却找不到合适的给list和map分段的函数。

在此我写了一个切割工具,分享一下

import org.springframework.util.collectionutils;
import java.util.arraylist;
import java.util.hashmap;
import java.util.iterator;
import java.util.list;
import java.util.map;
import java.util.set;
/**
 * @author lanfangyi
 * @version 1.0
 * @since 2019/2/28 20:39
 */
public class collectionutil {
  private collectionutil(){
  }
  /**
   * 将map切成段,作用与php的array_chunk函数相当
   *
   * @param chunkmap 被切段的map
   * @param chunknum 每段的大小
   * @param <k>   map的key类型
   * @param <v>   map的value类型 如果是自定义类型,则必须实现equals和hashcode方法
   * @return
   */
  public static <k, v> list<map<k, v>> mapchunk(map<k, v> chunkmap, int chunknum) {
    if (chunkmap == null || chunknum <= 0) {
      list<map<k, v>> list = new arraylist<>();
      list.add(chunkmap);
      return list;
    }
    set<k> keyset = chunkmap.keyset();
    iterator<k> iterator = keyset.iterator();
    int i = 1;
    list<map<k, v>> total = new arraylist<>();
    map<k, v> tem = new hashmap<>();
    while (iterator.hasnext()) {
      k next = iterator.next();
      tem.put(next, chunkmap.get(next));
      if (i == chunknum) {
        total.add(tem);
        tem = new hashmap<>();
        i = 0;
      }
      i++;
    }
    if(!collectionutils.isempty(tem)){
      total.add(tem);
    }
    return total;
  }
  /**
   * 将list切割
   *
   * @param chunklist 被分隔的数组
   * @param chunknum 每段的大小
   * @param <t>    list中的类型
   * @return
   */
  public static <t> list<list<t>> listchunk(list<t> chunklist, int chunknum) {
    if (chunklist == null || chunknum <= 0) {
      list<list<t>> t = new arraylist<>();
      t.add(chunklist);
      return t;
    }
    iterator<t> iterator = chunklist.iterator();
    int i = 1;
    list<list<t>> total = new arraylist<>();
    list<t> tem = new arraylist<>();
    while (iterator.hasnext()) {
      t next = iterator.next();
      tem.add(next);
      if (i == chunknum) {
        total.add(tem);
        tem = new arraylist<>();
        i = 0;
      }
      i++;
    }
    if(!collectionutils.isempty(tem)){
      total.add(tem);
    }
    return total;
  }
}

补充:java中list集合存放map

list集合存放map示例:

list<map<string,object>> listmap = new arraylist<>();
map<string,object> map = new hashmap<string,object>();
list<entity> list = new arraylist<>();
map.put("list",list);
listmap.add(map);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

相关标签: JAVA List Map