根据下标切割数组

现有需求: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,
时间: 2024-10-08 05:03:36

根据下标切割数组的相关文章

用enum枚举量做下标初始化数组

一下copy自:http://bbs.csdn.net/topics/90234659 ------------------------------------------------------------------------------------------------------------------- “两则C语言技巧”http://tb.blog.csdn.net/TrackBack.aspx?PostId=1120124第一个技巧在我的环境下不能通过,是我的原因吗.引用:1.

求解关于下标要求数组或指针类型的小Q

a4gw4h碳碧说俨绷撼<http://weibo.com/p20180414Pp/230927983195011178831872> hshb83嘶拦慷湍茄埠<http://weibo.com/p/230927983134810480320512?9k97_20180414> ge36rn猛故财迷肺嫉<http://weibo.com/20180414pp/230927983004394624651264> pw3dh7可咏口倒悍却<http://weibo.c

split方法切割数组

指定的字符串按"o"截取 当一个base64需要剪去前面的部分的时候 var params={ "imgJustBase64":this.zheng.split(",")[1], "imgBackBase64": this.fan.split(",")[1], } 原文地址:https://www.cnblogs.com/lml-lml/p/8964270.html

一个数组,每隔两个数删除一个数,到数组末尾接着从头开始,一直循坏,得出最后删除的一个元素的下标

public class DeleteEveryTwo { public static void main(String[] args) { int index = getLastDeletedIndex(8); System.out.println("The last index deleted is " + index); } /** * * @param a *            数组长度 * @return 最后被删除的数的原始下标 */ public static int

返回数组中元素之和为输入值的元素的下标(以1为基)

Leetcode中原题:Two Sum 给定一个整数数组,找出其中和等于给定目标值的数的下标(数组第一个元素的下标是1),第一个下标必须比第二个下标小,假定此题只有唯一解. 例: 输入:numbers={2, 7, 11, 15}, target=9 输出:index1=1, index2=2 思路1:两层循环,外层循环从0到倒数第二个元素,里层循环,从当前外层循环下标的下一个值开始一直到数组结尾,复杂度O(n2),超时. 思路2:如果数组是有序的,显然有更好的做法.使用常用的效率比较高的排序算

js【实践】用 js 封装java shuffle函数(打乱数组下标方法)

此方法返回的会是一个全新的数组 所以并不会像java里的shuffle函数一样返回一个引用一样的数组 思路如下: 1.新建一个函数传入需要打乱下标的数组 2.获取数组的长度 3.新建一个用来保存并且返回结果的数组 4.根据数组的长度新建一个随机数(随机数记得要向下取整不然会下标越界) 5.循环添加到结果数组里面 代码如下: <script type="text/javascript"> var testArr = new Array("中国","

使用字段的值作为数组下标

对于awk命令,任何表达式都可以用作数组的下标.所以,也可以用字段作下标.下面的例子中的程序用于计算所有名字在第2 个字段出现的次数,并引入了一种for循环的新形式. for(index_value in array) statement 在前面介绍的例子中,END块中出现的for循环的工作过程如下:变量name被设为count数组的索引值,在每次for循环的迭代中,执行print操作,首先打印的是索引值,然后是保存在元素中的值(打印输出的次序无法确定). 范例 $ cat datafile4

js数组的用法以及数组根据下标(数值或字符)移除元素

1.创建数组 var array = new Array(); var array = new Array(size);//指定数组的长度 var array = new Array(item1,item2……itemN);//创建数组并赋值 2.取值.赋值 var item = array[index];//获取指定元素的值 array[index] = value;//为指定元素赋值 3.添加新元素 array.push(item1,item2……itemN);//将一个或多个元素加入数组,

字符串及数组常用方法

一.字符串string常用方法: 1.substring(start开始位置索引,end结束位置索引)截取的位置不包含结束位置的字符,只写一个参数表示重开始位置截取最后 输入负值将变为零,哪个较小作为开始 Str.substring(1,-3) =>Str.substring(0,1);//b str.substing(-1,1)  =>str.substring(0,1)//b 2.slice(start开始位置索引,end结束位置索引)基本和substring相似,区别在参数为负数. 为负