我有一个字符串数组,我想在不使用循环的情况下一次性检索15个元素。我不确定这是否可行 这是我的代码片段使用循环
String8uilder sb= new String8uilder();
for(int x=0;x<15;x++)
sb.append(array1[x]);
System.out.println(sb);
是否可以在不使用循环的情况下一次访问所有15个元素? 考虑到数组array1中已经有100个元素 提前致谢
答案 0 :(得分:0)
你是否被限制使用数组?如果没有,您可以使用其他数据结构,使您可以从中切割数据子集(例如列表)。
如果必须使用数组,则可以创建一个迭代数组切片的自定义Iterator
:
import java.util.Iterator;
import java.util.NoSuchElementException;
public class WatIterator<A> implements Iterator<A> {
private int i = 0;
private final A[] as;
private final int start;
private final int count;
public WatIterator(A[] _as, int _start, int _count) {
as = _as;
start = _start;
count = _count;
}
public synchronized boolean hasNext() {
return (i < count) && (as.length > start + i);
}
public synchronized A next() {
if (hasNext()) {
A a = as[start + i];
i = i + 1;
return a;
} else {
throw new NoSuchElementException();
}
}
public void remove() {
}
}
但要使用它,你仍然需要进行某种循环或递归,即使你把它放在toList
转换器中:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Wat {
public static <A> List<A> toList(Iterator<A> it) {
List<A> as = new ArrayList<A>();
while (it.hasNext()) {
as.add(it.next());
}
return as;
}
public static void main(String[] args) {
String[] array = new String[100];
for (int i = 0; i < 100; i++) array[i] = Integer.toString(i);
WatIterator<String> watIterator = new WatIterator(array,0,15);
List<String> slice = toList(watIterator);
System.out.println(slice); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
}
}