我正在尝试拆分数组列表中的元素。 例如,我有一个像
这样的arrayListList <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]]
答案 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);