我是靠谱客的博主 风中画板,最近开发中收集的这篇文章主要介绍Java8新特性:集合遍历forEach方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

Java8给所有的集合都添加了一个新的方法forEach,该方法遍历集合中的元素并为每个元素执行指定的动作。

注意,这里说的是集合的forEach方法,方法是在接口Iterable中的。而不是流Stream中的forEach方法,这两个特别容易混淆,两个方法的功能类似,但是使用场景有所区别。

下面这个就是集合的Iterable接口和Map接口中的forEach方法,它有一个默认实现,子类无需实现这个方法,集合对象可以直接调用forEach方法。

public interface Iterable<T> {
    // 只列出此方法
    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
}
public interface Map<K, V> {
	// 只列出此方法
    default void forEach(BiConsumer<? super K, ? super V> action) {
        Objects.requireNonNull(action);
        for (Map.Entry<K, V> entry : entrySet()) {
            K k;
            V v;
            try {
                k = entry.getKey();
                v = entry.getValue();
            } catch (IllegalStateException ise) {
                // this usually means the entry is no longer in the map.
                throw new ConcurrentModificationException(ise);
            }
            action.accept(k, v);
        }
    }
}

下面这个是Stream流中的forEach方法,是个抽象方法,由子类实现。

public interface Stream<T> extends BaseStream<T, Stream<T>> {
	// 只列出此方法
	void forEach(Consumer<? super T> action);
}

正文

在forEach方法出现之前,遍历集合要使用for循环,或者Iterable对象,比较复杂。Java8之后,可以直接调用forEach方法,使用Lambda表达式简化语法,如果对Lambda表达式不了解,请看本人博客:Java8新特性:Lambda表达式与函数式编程。

default void forEach(Consumer<? super T> action)

该方法对Iterable中的每个元素执行指定的操作(action),直到处理完所有元素或操作抛出异常为止。下面举一个List和Map集合遍历元素并执行指定action的例子。

public static void main(String[] args) {
    Arrays.asList("hi", "hello", "sawadika").forEach((a) -> System.out.println(a));

    Map<String, Integer> map = new HashMap<>();
    map.put("Hi", 1);
    map.put("Hello", 2);
    map.put("你好", 3);
    map.forEach((k, v) -> {
        System.out.println(k + ":" + v);
    });
}

总结

集合的forEach方法提供了非常便利的循环集合的方式,它利用了Java8的新特性Lambda来实现。

最后

以上就是风中画板为你收集整理的Java8新特性:集合遍历forEach方法的全部内容,希望文章能够帮你解决Java8新特性:集合遍历forEach方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部