Java 如何在列表中获取连续值对?

Java 如何在列表中获取连续值对?,java,Java,我希望通过循环数组来获得连续值对: List values = Arrays.asList("A", "B", "C"); ListIterator<String> it = values.listIterator(); while(it.hasNext()) { String start = it.previous(); String end = it.next(); } 试试这个:) List values=Arrays.asList(“A”、“B”、“

我希望通过循环数组来获得连续值对:

List values = Arrays.asList("A", "B", "C");
ListIterator<String> it = values.listIterator();
while(it.hasNext()) {
      String start = it.previous();
      String end = it.next();
}
试试这个:)

List values=Arrays.asList(“A”、“B”、“C”);
ListIterator it=values.ListIterator();
while(it.hasNext()){
字符串start=it.next();
if(it.hasNext()){
String end=it.next();
it.previous();
系统输出打印项次(开始+结束);
}
}

您可以使用经典的
for
循环实现这一点,如下所示:

public static void main(String[] args) {
    List<String> values = Arrays.asList("A", "B", "C");
    /*
     * You obviously want to output 2 values per iteration,
     * that means you have to adjust the condition to iterate to the
     * second last index (because of accessing i + 1)
     */
    for (int i = 0; i < values.size() - 1; i++) {
        System.out.println(values.get(i) + ", " + values.get(i + 1));
    }
}
publicstaticvoidmain(字符串[]args){
列表值=数组。asList(“A”、“B”、“C”);
/*
*显然,您希望每次迭代输出2个值,
*这意味着您必须调整条件以迭代到
*倒数第二个索引(因为访问i+1)
*/
对于(int i=0;i

不需要迭代器,我强烈建议不要只使用
List
(原始类型),而要使用
List
(指定项目类型)。

如果使用Java 8或更高版本,还可以尝试:

public static void main(String[] args) {
    List<String> values = Arrays.asList("A", "B", "C");

    IntStream.range(0, values.size() - 1)
        .forEach(i -> System.out.println(values.get(i) + ", " + values.get(i + 1)));

}
publicstaticvoidmain(字符串[]args){
列表值=数组。asList(“A”、“B”、“C”);
IntStream.range(0,values.size()-1)
.forEach(i->System.out.println(values.get(i)+“,“+values.get(i+1));
}
这里使用的是从
0
(包含)循环到
values.size()-1
(独占)的流,之后用于每个接受消费者的一个参数(在本例中为循环整数),然后只打印结果。我知道它几乎和迭代循环一样,但我想证明它也可以这样做


祝你好运

简单地将以前的值存储在本地变量中如何:

List<String> values = Arrays.asList("A", "B", "C");
Iterator<String> it = values.iterator();
if (it.hasNext()) {
    String start = it.next();
    for(String end = null; it.hasNext(); start = end) {
      end = it.next();
    }
}
List values=Arrays.asList(“A”、“B”、“C”);
迭代器it=values.Iterator();
if(it.hasNext()){
字符串start=it.next();
for(字符串end=null;it.hasNext();start=end){
end=it.next();
}
}

您的问题是什么?您想从每个索引中只获取第一个和第二个值,还是当前和下一个值(最后一个除外)?我想成对获取第一个和第二个值。然后第二个和第三个作为另一对。那么您想要一个大小为2的滑动窗口吗?您可以在
if
块内声明
end
并将其初始化为
it.next()
public static void main(String[] args) {
    List<String> values = Arrays.asList("A", "B", "C");

    IntStream.range(0, values.size() - 1)
        .forEach(i -> System.out.println(values.get(i) + ", " + values.get(i + 1)));

}
List<String> values = Arrays.asList("A", "B", "C");
Iterator<String> it = values.iterator();
if (it.hasNext()) {
    String start = it.next();
    for(String end = null; it.hasNext(); start = end) {
      end = it.next();
    }
}