有这样一个需求,循环数组输出动态表单为一行两列
分隔数组每两个为一组,如果单数最后一个为一组
这里写图片描述

import java.util.ArrayList;
import java.util.List;

public class SplitArray {
    public static void main(String[] args) {
        String ary[] = { "a", "b", "c", "d", "e" }; // 分隔的数组
        int splitSize = 2; // 分隔的大小

        Object subAry[] = splitAry(ary, splitSize);
        for (Object obj : subAry) {
            String subItem[] = (String[]) obj;
            for (int i = 0; i < subItem.length; i++) {
                System.out.print(subItem[i] + ",");
            }
            System.out.println();
        }
    }

    /**
     *  比如 { "a", "b", "c", "d", "e" }
     *  分隔成
     *  a, b
     *  c, d
     *  e
     */
    private static Object[] splitAry(String ary[], int subSize) {

        int count = ary.length % subSize == 0 ? ary.length / subSize
                : ary.length / subSize + 1;

        List<List<String>> subAryList = new ArrayList<List<String>>();
        for (int i = 0; i < count; i++) {
            int index = i * subSize;
            List<String> list = new ArrayList<String>();
            int j = 0;
            while (j < subSize && index < ary.length) {
                list.add(ary[index++]);
                j++;
            }
            subAryList.add(list);
        }
        // 将List<List<String>> 封装为 Object[],也可以不需要
        Object[] subAry = new Object[subAryList.size()];
        for (int i = 0; i < subAryList.size(); i++) {
            List<String> subList = subAryList.get(i);
            String[] subAryItem = new String[subList.size()];
            for (int j = 0; j < subList.size(); j++) {
                subAryItem[j] = subList.get(j);
            }
            subAry[i] = subAryItem;
        }
        return subAry;
    }
}

作者:itmyhome


本文转载:CSDN博客