拆分数组列表

时间:2015-12-12 04:41:12

标签: java

我正在尝试拆分数组列表中的元素。 例如,我有一个像

这样的arrayList
List <String> elements = new ArrayList<String>();

元素// ["frnec","fdct","logic","mastro","seloger"] 元素的大小应该是动态的......

 List<List<String>> splittedlists = null;

我想拆分像["frnec"] ,["fdct",logic"],["mastro", "seloger"].

这样的元素
splittedlists //[["frnec"] ,["fdct",logic"],["mastro", "seloger"]].

但新splittedlists的大小不应超过4,因为我必须切断elements

我有很多代码来拆分列表。但我不知道如何设置'splittedlists'.的最大大小 但它会通过设置spitted元素的目标大小来分割

  public static <T extends Object> List<List<T>> split(List<T> list, int targetSize) {
        List<List<T>> lists = new ArrayList<List<T>>();
        for (int i = 0; i < list.size(); i += targetSize) {
            lists.add(list.subList(i, Math.min(i + targetSize, list.size())));
        }
        return lists;
    }

我的要求是通过设置4

的最大数组大小(此处为splittedlists)来拆分列表中的元素

如果元素为// ["frnec","fdct"] i want to split is as ["frnec"], ["fdct"] 如果元素是// [0, 1, 2, 3, 4, 8, 6],我必须拆分而不超过新的数组大小4,如

 [[0,1],[2,3],[4,8],[6]]

2 个答案:

答案 0 :(得分:1)

如果您不需要维护订单,则可以使用模数(%)运算符。因此对于3个子列表,它将第0个元素放在第0个子列表中,第一个子列表中的第一个元素,第二个子列表中的第二个元素,第0个子列表中的第三个元素,第一个子列表中的第四个元素......等等。

类似的东西:

for(int i = 0; i < list.size() ; i++){
  listOfLists.get(i % 3).add(list.get(i));
}

答案 1 :(得分:1)

这是我的答案..猜猜你能理解我在做什么..

    List<String> list = new ArrayList<>();
    for (int i = 1; i < 11; i++) {
        list.add(i+"");
    }
    List<List<String>> lists = new ArrayList<>();
    int x = list.size()/4;
    int y = list.size()%4;
    int j = 0;
    for (int i = 0; i < list.size(); i=j) {
        j = i+x;
        if(y>0){
            j++;
            y--;
        }
        lists.add(list.subList(i, j));
    }
    System.out.println(list);
    System.out.println(lists);