最近工作中遇到对报表数据连续的项进行合并的功能,采用了递归的方法进行判断,简单的demo:
public static String convertContinue(String[] ints, int index) { int end = index; //结束条件,遍历完数组 if (ints.length == index) { return ""; } else { for (int i = index; i < ints.length; i++) { if (i < ints.length - 1) { //加上Key进行判断 String val1 = ints[i]; String val2 = ints[i+1]; if ((String.valueOf(Integer.valueOf(val1) + 1)).equals(val2)) { end = i; } else { if (i > index) { end = end + 1; } break; } } else { if (end == ints.length - 2) { end = ints.length - 1; break; } } } //相等说明不连续 if (index == end) return ints[index] + "," + convertContinue(ints, end + 1); else//连续 return ints[index] + "-" + ints[end] + "," + convertContinue(ints, end + 1); } }
测试数据:String[] NoNum={"2","3","5","6","8","10","11"}; System.out.println(convertContinue(NoNum,0));
测试结果:2-3,5-6,8,10-11,