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

时间:2019-01-11 15:27:58

标签: java

我想通过遍历数组来获取成对的连续值:

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

我如何获得:

A, B
B, C

4 个答案:

答案 0 :(得分:5)

您可以使用像这样的经典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));
    }
}

不需要迭代器,我强烈建议您不仅使用List(原始类型),还使用List<String>(指定项目类型)。

答案 1 :(得分:4)

尝试一下:)

List<String> values = Arrays.asList("A", "B", "C");
ListIterator<String> it = values.listIterator();
while(it.hasNext()) {
    String start = it.next();
    if(it.hasNext()) {
        String end = it.next();
        it.previous();
        System.out.println(start + end);
    }
}

答案 2 :(得分: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();
    }
}

答案 3 :(得分:0)

如果您使用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)));

}

这里使用的是Stream,它将从0(包括)循环到values.size() - 1(不包括),之后用于每个接受带有一个参数的Consumer的情况(在这种情况下为循环整数)然后打印结果。我知道它几乎与迭代循环相同,但我想证明它也可以用这种方式制作。

祝你好运!