List s = ["aa","sss","ddd","fff","ggg","hhhh"]
int[] a = [3,1,2]
//怎么把s按照数组a截取如下:
["aa","sss","ddd"]
["fff"]
["ggg","hhhh"]
public static void main(String[] args) {
String[] arrStr = {"aa","sss","ddd","fff","ggg","hhhh"};
//转换成list,可以通过下标删除元素
List list = Arrays.asList(arrStr);
/** 转换成ArrayList
* Arrays.asLisvt() 返回java.util.Arrays$ArrayList, 而不是ArrayList。
* Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等
* method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。 ArrayList override这些method来对list进行操作,
* 但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException
* 所以需要转换成ArrayList
*/
List arrayList = new ArrayList(list);
//如果是list的话,就不需要以上的步骤了。
int[] a = {3,1,2};
for (int i = 0; i < a.length; i++) {
int num = a[i];
//初始化数组长度
String[] arr = new String[num] ;
//进行转成成数组,删除已经复制过的元素
for (int j = 0; j < num; j++) {
arr[j] = arrayList.get(0);
arrayList.remove(0);
}
System.out.println(Arrays.toString(arr));
}
}
list是这么用的吗? 那个s 应该是个String数组才对吧?
List<List<String>>resultList=new ArrayList<List<String>>();
int start=0;
for(int len:a){
List<String>res=new ArrayList<String>();
for(int i=start;i<(start+len);i++){
if(i<s.size()){
res.add(s.get(i));
}
}
resultList.add(res);
start+=len;
}
//resList结果就是[["aa","sss","ddd"],["fff"],["ggg","hhhh"]]遍历就可以挨个获取
public class dddd {
public static void main(String[] args) {
// TODO Auto-generated method stub
//
String[] s = {"aa","sss","ddd","fff","ggg","hhhh"};
int[] a = {3,1,2};
int start=0;
int end=0;
for(int i=0;i<a.length;i++){
end=a[i]+start;
if(start==s.length){
break;
}
String[] b=new String[a[i]];
for(int y=start;y<end;y++){
b[y-start]=s[y];
}
show(b);
start=end;
}
}
private static void show(String[] b) {
// TODO Auto-generated method stub
String s ="[";
for(int i=0;i<b.length;i++){
if(i==0){
s=s+b[i];
}else{
s=s+","+b[i];
}
}
s+="]";
System.out.println(s);
}
}
String []s = {"aa","sss","ddd","fff","ggg","hhhh"};
int[] a = {3,1,2};
int index = 0;
for (int i = 0; i < a.length; i++) {
String[] str = new String[a[i]];
for (int j = 0; j < str.length; j++) {
str[j] = s[j+index];
}
index+=a[i];
System.out.println(str);
}
List<String> s = Arrays.asList("aa", "sss", "ddd", "fff", "ggg", "hhhh");
int[] a = new int[]{3, 1, 2};
List<List<String>> result = new ArrayList<>();
int lastIdx = 0;
for (int idx = 0; idx < a.length; idx++) {
if (lastIdx >= s.size()) {
break;
}
result.add(s.subList(lastIdx, Math.min(lastIdx + a[idx], s.size()))); // 考虑越界异常
lastIdx += a[idx];
}
for (List<String> sl : result) {
System.out.println(sl);
}
亲测可以得到你想要的结果,麻烦采纳
public static void main(String[] args) {
String[] s = {"aa","sss","ddd","fff","ggg","hhhh"};
int[] a = {3,1,2};
int start = 0;
ArrayList list = new ArrayList();
for(int j=0;j<a.length;j++){
int len = a[j];
for(int i=start;i<(len+start);i++){
list.add(s[i]);
}
start = start + len;
System.out.println(list);
list.clear();
}
}
我的方法效率会比较高,时间复杂度O(n)
public static void main(String[] args) {
String[] s = {"aa", "sss", "ddd", "fff", "ggg", "hhhh"};
int[] a = {3, 1, 2};
List<String> list = Arrays.asList(s);
int intLen = a.length;
int index = 0;
for (int i = 0; i < intLen; i++) {
System.out.println(list.subList(index,index + a[i]));;
index = a[i];
}
}