實現java 中 list集合中有幾十萬條數據,每400條爲一組取出

具體解決方案如下:
public static void main(String[] args){
 
// 造假數據
    List<HashMap<String,String>> list=new ArrayList<>();
    for(int i=0 ;i<=2 ;i ++ ){
        HashMap <String,String> map= new HashMap<>();
        map.put("id",i+"");
        map.put("mobileNo",155+""+i);
        list.add(map);
    }
    System.out.println("查詢數據集合長度: "+list.size());
    Map<String,List<HashMap<String,String>>> map = groupList(list,2);
    System.out.println("分組後的總數據集合: "+map);
    System.out.println(map.size());
    for(int i=0; i<map.size() ;i++){
        List<HashMap<String, String>> newList = map.get("keyName" + i);
        System.out.println("分組後的單個集合數據: "+newList.toString());
        if(CollectionUtils.isNotEmpty(newList)){
            //獲取分組中的手機號  ,拼接
            StringBuffer sbf=new StringBuffer();
            for(int j=0 ; j<newList.size();j++){
                HashMap<String, String> newMap = newList.get(j);
                String mobileNo = MapUtils.getString(newMap, "mobileNo");
                if(j+1==newList.size()){
                    sbf.append(mobileNo);
                }else{
                    sbf.append(mobileNo).append(",");
                }

            }
            String phons = sbf.toString();
            System.out.println("處理後的手機號數據: "+phons);
            if(phons.length() > 0){
                System.out.println("發短信: "+phons);
            }
        }
    }
}

/**
 * 分組取出List中的數據 每400條爲一組取出
 * @param list 可存入幾十萬條數據的List
 * @param groupSize  每組數據長度 
 * @return
 */
public  Map<String,List<HashMap<String,String>>> groupList(List list,int groupSize){
    if(groupSize <= 0){
        groupSize =100 ;
    }
    int listSize=list.size();
    int toIndex=groupSize;
    //用map存起來新的分組後數據
    Map<String,List<HashMap<String,String>>> map = new HashMap();
    int keyToken = 0;
    for(int i = 0;i<list.size();i+=groupSize){
        //作用爲toIndex最後沒有100條數據則剩餘幾條newList中就裝幾條
        if(i+groupSize>listSize){
            toIndex=listSize-i;
        }
        List<HashMap<String,String>> newList = list.subList(i,i+toIndex);
        map.put("keyName"+keyToken, newList);
        keyToken++;
    }
    return map;
}

 

參考

https://www.cnblogs.com/wkrbky/p/6100984.html

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章