您可以在不使用索引的情况下处理列表中的连续值对。这是一种方式:
private void processWordsInSentence(List sentence) {
Iterator it = sentence.iterator();
if (it.hasNext()) {
String previous = it.next();
while(it.hasNext()) {
String current = it.next();
// use previous and current values, e.g.
System.out.println(previous + " " + current);
previous = current;
}
}
}为什么要使用这样的东西而不是sentence.get(index)?我会提出几个原因:
在您的示例中,您的处理实际上是关注连续的
列表中的值,而不是它们的位置。所以没有“增值”
必须明确地摆弄指数。
请记住,List是一个多个接口
实现。 ArrayList以常量执行.get(index)
时间,但LinkedList上的同一个电话需要时间
与index的值成比例。所以可能会有真正的表现
考虑。
上面的processWordsInSentence实现必须明确处理具有少于两个元素的列表的情况。保护if内部的循环可以使用for语句编写,如果您更喜欢该样式,则可以将遍历与处理实际数据分开。
private void processWordsInSentence(List sentence) {
Iterator it = sentence.iterator();
if (it.hasNext()) {
for (
String previous = it.next(), current = null;
it.hasNext();
previous = current
) {
// use previous and current values, e.g.
System.out.println(previous + " " + current);
}
}
}