在 Java 中迭代/循环整数列表的不同方法

x33g5p2x  于2021-10-15 转载在 Java  
字(2.6k)|赞(0)|评价(0)|浏览(326)

在 Java 中,您可以用不同的方式迭代或循环一个 List 对象。在这个简短的示例中,您将找到 8 种不同的方法来迭代/循环 Java 中的 List ofIntegers

附注测试最高 JDK 8 版本。

假设您有以下列表对象:

final List<Integer> integerList = Arrays.asList(101, 33, 9, 55, 76, 22, 95);

1. For 循环

For 循环是迭代整数列表的最古老/遗留技术之一。

for (int i = 0; i < integerList.size(); i++) {
  System.out.println(integerList.get(i));
}

2.While 循环

int ctr = 0;

while (ctr < integerList.size()) {
  System.out.println(integerList.get(ctr));
  ctr++;
}

3. 迭代器

Iterator<Integer> itr = integerList.iterator();

while (itr.hasNext()) {
  System.out.println(itr.next());
}

4. ListIterator

ListIterator<Integer> listIterator = integerList.listIterator();

while (listIterator.hasNext()) {
  System.out.println(listIterator.next());
}

5. 增强的 For 循环

for (Integer i : integerList) {
  System.out.println(i);
}

6. forEach 匿名内部类

ConsumerJava 8 中引入的功能接口。它接受单个输入参数并且不返回任何结果。

integerList.forEach(new Consumer<Integer>() {
    @Override
    public void accept(Integer integer) {
      System.out.println(integer);
    }
});

7. forEach 与 Lambda

Lambda Expressions 在 Java 8 中引入。它是一小段代码,它接受参数并返回一个值。

integerList.forEach((Integer i) -> System.out.println(i));

// or 

integerList.forEach((i) -> System.out.println(i));

// or

integerList.forEach(i -> System.out.println(i));

8. 带有方法引用的 forEach

有时,lambda 表达式除了调用现有方法之外什么都不做。在这些情况下,按名称引用现有方法通常会更清楚。 Method references 使您能够做到这一点;它们是用于已具有名称的方法的紧凑、易于阅读的 lambda 表达式。

integerList.forEach(System.out::println);

请参阅完整示例。

IterateListOfIntegers.java

package org.websparrow.collections;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.function.Consumer;

public class IterateListOfIntegers {

  public static void main(String[] args) {

    final List<Integer> integerList = Arrays.asList(101, 33, 9, 55, 76, 22, 95);

    // 1. Legacy style - for loop
    for (int i = 0; i < integerList.size(); i++) {
      System.out.println(integerList.get(i));
    }

    // 2. while loop
    int ctr = 0;
    while (ctr < integerList.size()) {
      System.out.println(integerList.get(ctr));
      ctr++;
    }

    // 3. Iterator
    Iterator<Integer> itr = integerList.iterator();
    while (itr.hasNext()) {
      System.out.println(itr.next());
    }

    // 4. ListIterator
    ListIterator<Integer> listIterator = integerList.listIterator();
    while (listIterator.hasNext()) {
      System.out.println(listIterator.next());
    }

    // 5. Enhanced ForLoop
    for (Integer i : integerList) {
      System.out.println(i);
    }

    // 6. forEach with Anonymous Inner Class
    integerList.forEach(
        new Consumer<Integer>() {
          @Override
          public void accept(Integer integer) {
            System.out.println(integer);
          }
        });

    // 7. forEach with Lambda expression
    integerList.forEach((Integer i) -> System.out.println(i));
    // or
    integerList.forEach((i) -> System.out.println(i));
    // or
    integerList.forEach(i -> System.out.println(i));

    // 8. forEach with method reference
    integerList.forEach(System.out::println);
  }
}

输出:

101
33
9
55
76
22
95

相关文章