好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

JAVA List和Map切割工具详解

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

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示例:

?

1

2

3

4

5

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);

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

原文链接:https://blog.csdn.net/qq_38524629/article/details/90139569

查看更多关于JAVA List和Map切割工具详解的详细内容...

  阅读:19次