2015-12-12 5 views
0

Я пытаюсь разделить элементы в списке массивов. Например у меня есть 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

я получил много кода кода, чтобы разделить lists.But я не знаю, как установить максимальный размер 'splittedlists'. , но она будет разделена, установив целевой размер сплюнул элементов

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; 
    } 

Мой requirmeent заключается в разделении элементов в списке, установив максимальный размер массива (здесь 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

Вопрос не включает в себя какой-либо код. (кстати, прошедшее время разделения разделено) – pvg

+0

Нужны ли подспискам тот же порядок, что и в исходном списке? – kag0

+0

@pvg google «splitted» on SO alone дает 212 000 результатов ;-) –

ответ

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); 
+0

Отличный ........ Он работает .............. handsffffff – Psl

1

Если вам не нужно, чтобы поддерживать порядок, вы можете использовать модуль (%) оператора. Таким образом, для 3-х подвыражений он помещает 0-й элемент в 0-й подсписке, первый элемент в первом подсписке, второй элемент во втором подсписке, третий элемент в 0-м подсписке, четвертый элемент в 1-м подсписке ... п.

Что-то вроде:

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

может предоставить образец кода .. я didnt get..также я могу принять ур ответить – Psl

+0

да я не должен поддерживать порядок ... но размер разделенного списка shoulb nt превышает 4 – Psl

+0

@Psl обновлен, вы знакомы с тем, как работает мода? – kag0

Смежные вопросы