java數組拆分多個子數組

這裏做個java集合/數組拆分多個子集合/數組的兩種實現方式的筆記。


方式 一:

/**
 * 拆分集合
 * @param datas
 * @param splitSize
 * @param <T>
 * @return
 */
private <T> List<List<T>> spliceArrays(List<T> datas, int splitSize) {
    if (datas == null || splitSize < 1) {
        return  null;
    }
    int totalSize = datas.size();
    //獲取要拆分子數組個數
    int count = (totalSize % splitSize == 0) ?
            (totalSize / splitSize) : (totalSize/splitSize+1);

    System.out.println("split count = " +count);

    List<List<T>> rows = new ArrayList();
    for (int i = 0;i < count;i ++) {

        int index = i * splitSize;
        List<T> cols = new ArrayList();
        int j = 0;
        while (j < splitSize && index < totalSize) {
            cols.add(datas.get(index++));
            j ++;
        }
        rows.add(cols);
    }
    return rows;
}


方式二:

/**
 * 拆分集合
 * @param datas
 * @param splitSize
 * @param <T>
 * @return
 */
private <T> List<List<T>> spliceArrays(List<T> datas, int splitSize) {
    if (datas == null || splitSize < 1) {
        return  null;
    }
    int totalSize = datas.size();
    int count = (totalSize % splitSize == 0) ?
            (totalSize / splitSize) : (totalSize/splitSize+1);

    List<List<T>> rows = new ArrayList<>();

    for (int i = 0; i < count;i++) {

        List<T> cols = datas.subList(i * splitSize,
                (i == count - 1) ? totalSize : splitSize * (i + 1));
        rows.add(cols);
        System.out.println(cols);
    }
    return rows;
}


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