zoukankan      html  css  js  c++  java
  • 根据下标切割数组

    现有需求: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,
  • 相关阅读:
    zabbix5.0安装
    Ubuntu下为服务器添加新用户
    oss存储的安装与使用
    模型结构可视化
    GPU算力查询
    台式机PC挂载共享盘
    Python批量拷贝文件
    NVIDIA显卡驱动,CUDA,CUDNN安装流程
    使用Docker GPU训练环境安装过程中所碰到的问题
    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  • 原文地址:https://www.cnblogs.com/naiwenmoer/p/6892539.html
Copyright © 2011-2022 走看看