The Code Snippet will split the array elements using Comma and add this into List. After this it will add the id value as key and extract the SubList from the parentList, adding the SubList as value based on the length from a different array.
/**
* @param args
*
*/
public static void main(String[] args){
String[] array = {"23,29,1", "3,36,1", "13,43,1", "15,50,1", "23,57,1", "23,64,1", "23,71,1", "23,78,1", "23,85,1", "23,92,1", "23,99,1"};
String[] arraySize = {"6", "5"};
String[] idKey = {"29", "30"};
//Initialising List holds the values for all sections
List<String> averageList = new ArrayList<String>();
//Initialising sectionMap idKey and averageList values as key and value pairs.
HashMap<String, List> sectionMap = new HashMap<String, List>();
//Iterate the Array to split the elements using Comma
for (String average: array){
String[] details = average.split(",");
averageList.add(details[0]);
}
int endIndex = 0;
int beginIndex = 0;
/* Iterate the arraySize to add idKey
* and averageList values as key and value pairs.
*/
for(int i=0; i<arraySize.length; i++){
if (i==0){
beginIndex = 0;
//Assigning the endIndex from the arraySize
endIndex = new Integer(arraySize[i]);
//Adding the idKey and extracting the subList from the averageList into sectionMap
sectionMap.put(idKey[i], averageList.subList(beginIndex, endIndex));
}else {
//Assigning endIndex as beginIndex for i>0
beginIndex = endIndex;
endIndex = endIndex + new Integer(arraySize[i]);
sectionMap.put(idKey[i], averageList.subList(beginIndex, endIndex));
}
}
System.out.println("sectionMap -->" +sectionMap);
}