public class SplitArrayUtility {
public static char[][] splitArray(char[] source, char splitChar) {
if (source==null) {
return null;
}
return helperSplitArray(source, splitChar, 0, source.length);
}
private static char[][] helperSplitArray(char[] source, char splitChar, int beginIndex, int endIndex) {
for (int i=beginIndex;i<endIndex;i++) {
if (source[i]==splitChar) {
char[][] rightPart = helperSplitArray(source, splitChar, i+1, endIndex);
char[][] result = new char[rightPart.length+1][];
System.arraycopy(rightPart, 0, result, 1, rightPart.length);
result[0] = new char[i-beginIndex];
System.arraycopy(source, beginIndex, result[0], 0, result[0].length);
return result;
}
}
char[][] result = new char[1][endIndex-beginIndex];
System.arraycopy(source, beginIndex, result[0], 0, result[0].length);
return result;
}
public static void main(String[] args) {
char[] testArray = new char[]{1,2,3,0xFF,4,5,6,7,8,0xFF,9,0xFF,0xFF,10,11};
char[][] splitResult = splitArray(testArray, (char) 0xFF);
for (int i=0;i<splitResult.length;i++) {
System.out.print("array "+i+": ");
for (int j=0;j<splitResult[i].length;j++) {
System.out.print((int) splitResult[i][j]+", ");
}
System.out.println();
}
}
}