【发布时间】:2014-04-23 07:10:45
【问题描述】:
我有一个类似于{"a","b","c","d"} 的字符串数组。每两个连续的项目都是对的,我想遍历数组并能够一起考虑这两个字符串。目前我正在考虑有一个循环和一个计数来计算我在迭代中的位置,但有没有更简单/更好的方法?
【问题讨论】:
-
想到的一些可能性:对的映射、数组的数组、表示一对的对象、将计数增加 2 而不是 1。
我有一个类似于{"a","b","c","d"} 的字符串数组。每两个连续的项目都是对的,我想遍历数组并能够一起考虑这两个字符串。目前我正在考虑有一个循环和一个计数来计算我在迭代中的位置,但有没有更简单/更好的方法?
【问题讨论】:
for (int i=0 ; i<a.length ; i+=2) {
String first = a[i];
String second = a[i+1];
...
}
如果数组是由调用者提供的,那么您可能需要处理 a.length 不是偶数的情况。
【讨论】:
所以我假设您的意思是 a -> b 和 c -> d。处理这个问题的经典方法是一次增加两个的循环:
for(int i = 0; i < myArray.length; i += 2) {
final String firstVal = myArray[i];
final String secondVal = myArray[i + 1];
}
【讨论】:
几种可能性。
1)
class PairString {
String a;
String b;
}
PairString[] stringPairs;
2)
while (i < array.length) {
String a = array[i];
String b = array[i + 1];
i += 2;
}
【讨论】:
使用一些数学怎么样?
final String[] words = { "Foo", "Bar", "Baz", "42" };
final int n = words.length / 2;
for (int i = 0; i < n; i++) {
System.out.println(words[i * 2] + "-" + words[(i * 2) + 1]);
}
【讨论】:
我也喜欢一次增加两个的循环,但只是为了添加一些不同的东西,你也可以使用IntStream:
final String[] words = { "Foo", "Bar", "Baz", "42" };
IntStream.range(1, words.length).forEach(i -> System.out.println(words[i-1] + words[i]));
输出:
FooBar
BarBaz
Baz42
【讨论】: