Java Stream遍历List

在Java编程中,我们经常会遇到需要遍历List集合的情况。传统的方法是使用for循环来遍历集合中的每一个元素。然而,随着Java 8引入了Stream流的概念,我们可以更加方便和高效地对List进行遍历操作。

什么是Stream

Stream是Java 8中引入的一种处理集合的方式,它不是一个数据结构,而是一种用于操作数据的抽象概念。通过使用Stream,我们可以以声明性的方式对集合进行各种操作,比如过滤、映射、排序等。

Stream遍历List的方式

在Java中,我们可以通过将List转换为Stream来对其进行遍历操作。下面是一些常用的Stream遍历List的方式:

  1. 使用forEach方法
List<String> list = Arrays.asList("Apple", "Banana", "Orange");
list.stream().forEach(System.out::println);
  1. 使用forEachOrdered方法
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEachOrdered(System.out::println);
  1. 使用iterator方法
List<String> fruits = Arrays.asList("Apple", "Banana", "Orange");
fruits.stream().iterator().forEachRemaining(System.out::println);
  1. 使用Stream的其他操作

除了forEach方法外,Stream还提供了丰富的操作方法,比如map、filter、distinct等,可以实现更加灵活和复杂的操作。

示例代码

下面是一个简单的示例代码,演示了如何使用Stream遍历List并过滤出长度大于5的字符串:

List<String> fruits = Arrays.asList("Apple", "Banana", "Orange", "Pineapple", "Grape");
fruits.stream()
      .filter(fruit -> fruit.length() > 5)
      .forEach(System.out::println);

流程图

flowchart TD
    start[Start] --> input(List集合)
    input --> convert(Stream)
    convert --> process(处理操作)
    process --> output(输出结果)
    output --> end[End]

结合实际应用

假设我们有一个旅行图,其中包含了多个城市的信息,我们想要筛选出属于中国的城市并输出它们的名称。我们可以利用Stream来实现这一功能。

journey
    title 旅行图

    section 中国
    北京 --> 上海
    上海 --> 广州
    广州 --> 深圳
    end
class City {
    private String name;
    private String country;

    public City(String name, String country) {
        this.name = name;
        this.country = country;
    }

    public String getName() {
        return name;
    }

    public String getCountry() {
        return country;
    }
}

List<City> cities = Arrays.asList(new City("北京", "中国"), new City("上海", "中国"), new City("纽约", "美国"));

cities.stream()
      .filter(city -> city.getCountry().equals("中国"))
      .map(City::getName)
      .forEach(System.out::println);

通过上面的代码,我们可以筛选出属于中国的城市,并将它们的名称输出到控制台上。

结语

Stream提供了一种简洁、高效的方式来处理集合数据,使得我们可以更加方便地进行各种操作。掌握Stream的使用方法可以让我们的代码更加简洁和可读。希望本文对你有所帮助!