JAVA ListとMapカットツール

2694 ワード

JAVA ListとMapカットツール
PHPを使って開発した人はみんなarrayを知っています.chunk関数は、データをセグメント化する役割を果たしていますが、javaではリストと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       map key  
     * @param       map value           ,     equals hashCode  
     * @return
     */
    public static  List> mapChunk(Map chunkMap, int chunkNum) {
        if (chunkMap == null || chunkNum <= 0) {
            List> list = new ArrayList<>();
            list.add(chunkMap);
            return list;
        }
        Set keySet = chunkMap.keySet();
        Iterator iterator = keySet.iterator();
        int i = 1;
        List> total = new ArrayList<>();
        Map 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        List    
     * @return
     */
    public static  List> listChunk(List chunkList, int chunkNum) {
        if (chunkList == null || chunkNum <= 0) {
            List> t = new ArrayList<>();
            t.add(chunkList);
            return t;
        }
        Iterator iterator = chunkList.iterator();
        int i = 1;
        List> total = new ArrayList<>();
        List 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;
    }

}