根据下标切割数组
Posted 奈文摩尔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据下标切割数组相关的知识,希望对你有一定的参考价值。
现有需求:String[] arr1 = [A,A,A,A,B,B,B,B,B,C,C,C] String[] arr2 = [A1,A2,A3,A4,B1,B2,B3,B4,B5,C1,C2,C3]
根据A类或B类或C类切割arr2数组
1 //根据大类数组切割中类数组 2 public Object[] splitArray(String[] str1,String[] str2){ 3 Set<Integer> set = new HashSet<Integer>(); 4 set.add(0); 5 for (int i = 0; i < str1.length - 1; i++) { 6 if(!(str1[i].equals(str1[i+1]))){ 7 set.add(i+1); 8 } 9 } 10 set.add(str1.length); 11 Integer[] sep = set.toArray(new Integer[1]); 12 System.out.println("set---"+set); 13 for(Integer sep_i:sep){ 14 System.out.println("sep---"+sep_i); 15 } 16 17 List<List<String>> subAryList = new ArrayList<List<String>>(); 18 19 for(int i = 0; i < sep.length - 1; i++){ 20 int index = sep[i]; 21 22 int j = 0; 23 List<String> list = new ArrayList<>(); 24 while (j < (sep[i+1]-sep[i]) && index < str2.length) { 25 list.add(str2[index++]); 26 j++; 27 } 28 subAryList.add(list); 29 System.out.println("list----"+list); 30 } 31 System.out.println("-------subAryList-->"+subAryList); 32 33 Object[] subArray = new Object[subAryList.size()]; 34 for(int i = 0; i < subAryList.size(); i++){ 35 List<String> subList = subAryList.get(i); 36 String[] subAryItem = new String[subList.size()]; 37 for(int j = 0; j < subList.size(); j++){ 38 subAryItem[j] = subList.get(j); 39 } 40 subArray[i] = subAryItem; 41 } 42 return subArray; 43 }
在所需要的地方调用
1 Object[] subArray = splitArray(str1,str); 2 for(Object obj: subArray){//打印输出结果 3 String[] aryItem = (String[]) obj; 4 for(int i = 0; i < aryItem.length; i++){ 5 System.out.print(aryItem[i] + ", "); 6 } 7 System.out.println(); 8 }
输出结果
set---[0, 4, 9, 12] sep---0 sep---4 sep---9 sep---12 list----[A1, A2, A3, A4] list----[B1, B2, B3, B4, B5] list----[C1, C2, C3] -------subAryList-->[[A1, A2, A3, A4], [B1, B2, B3, B4, B5], [C1, C2, C3]] A1, A2, A3, A4, B1, B2, B3, B4, B5, C1, C2, C3,
以上是关于根据下标切割数组的主要内容,如果未能解决你的问题,请参考以下文章