1. 程式人生 > >根據下標切割數組

根據下標切割數組

public string als str tar () [] hset item

現有需求: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,

根據下標切割數組