Is there anyway to split ArrayList into different parts without knowing size of it until runtime? I know there is a method called:
list.subList(a,b);
I am also doing key:value mapping for values with index.
public static void partitionOfList(List l1, List l2, int partitionSize){ Map> mapListData = new LinkedHashMap>(); List partitions = new LinkedList(); for (int i = 0; i < l1.size(); i += partitionSize) { partitions.add(l1.subList(i,Math.min(i + partitionSize, l1.size()))); l2=new ArrayList(partitions); } int l2size = l2.size(); System.out.println("Partitioned List: "+l2); int j=1; for(int k=0;k) partitions.get(k); // System.out.println(l2.size()); if(l2.size()>=partitionSize && l2.size()!=1){ mapListData.put("val"+j+"-val"+(j+partitionSize-1), l2); j=j+partitionSize; } else if(l2.size()<=partitionSize && l2.size()!=1){ // System.out.println("::::@@::"+ l2.size()); int s = l2.size(); mapListData.put("val"+j+"-val"+(j+s-1), l2); //k++; j=j+partitionSize; } else if(l2.size()==1){ // System.out.println("::::::"+ l2.size()); //int s = l2.size(); mapListData.put("val"+j, l2); //k++; j=j+partitionSize; } } System.out.println("Map: " +mapListData); } public static void main(String[] args) { List l1 = new LinkedList(); l1.add(1); l1.add(2); l1.add(7); l1.add(4); l1.add(0); l1.add(77); l1.add(34); partitionOfList(l1,l2,2); }
Output:
Partitioned List: [[1, 2], [7, 4], [0, 77], [34]] Map: {val1-val2=[1, 2], val3-val4=[7, 4], val5-val6=[0, 77], val7=[34]}
Partitioned List: [[1, 2], [7, 4], [0, 77], [34]]
Map: {val1-val2=[1, 2], val3-val4=[7, 4], val5-val6=[0, 77], val7=[34]}