Java 如何使用循环检索数组元素的子字符串
我有一个字符串数组,我想在不使用循环的情况下一次检索15个元素。我不确定这是否可能 下面是我使用循环的代码片段Java 如何使用循环检索数组元素的子字符串,java,Java,我有一个字符串数组,我想在不使用循环的情况下一次检索15个元素。我不确定这是否可能 下面是我使用循环的代码片段 String8uilder sb= new String8uilder(); for(int x=0;x<15;x++) sb.append(array1[x]); System.out.println(sb); String8uilder sb=新String8uilder(); 对于(int x=0;x您是否受限于使用数组?如果不是,您可以使用
String8uilder sb= new String8uilder();
for(int x=0;x<15;x++)
sb.append(array1[x]);
System.out.println(sb);
String8uilder sb=新String8uilder();
对于(int x=0;x您是否受限于使用数组?如果不是,您可以使用其他数据结构,让您从中分割数据子集(例如列表)
如果必须使用数组,则可以创建一个自定义的迭代器
,该迭代器迭代数组的一部分:
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() {
}
}
我不知道你打算在这里做什么。如果你想一次打印出整个数组的内容,你可以使用'System.out.println(Arrays.toString(array1));`,但这只打印内容。如果您想以任何其他方式使用数组中的字符串,您仍然必须使用索引访问数组。我不确定我是否理解您尝试这样做的动机。您可以使用15个单独的语句,但这是大量的代码,并且计算时间几乎相同。如何假设数组包含100个元素可以缓解问题?+1感谢您的建议,我使用这种方法,而不是我的:)
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]
}
}