forEach如何遍历集合元素
2018-03-13 15:38
746 查看
知识点:
①集合遍历
②Lambda
③泛型
最近学习集合的时候看到下面的代码,
对forEachforEach方法会自动的将几何元素逐个的传给Lambda表达式,不是太明白就仔细看了看,复习了了Lambda式和forEach集合遍历。
1、ArrayList类与接口的关系:
ArrayList 实现了List接口,List的接口又继承了,Collection、Iterable,如下图:
2、JAVA8之后,Iterable接口新增了一个forEach(Comsumer action)默认方法
因为List接口继承了Iterable接口,所以List集合也可以直接调用该方法。
再看forEach()函数的参数,为Consumer接口,该接口就只有一个抽象方法
实现了List的接口的类ArrayList,它重写了forEach方法源代码如下
①集合遍历
②Lambda
③泛型
最近学习集合的时候看到下面的代码,
/*这个程序调用了Iterable的forEach()默认方法来遍历几何元素, 传给方法的是参数是Lambda表达式, 该表达式的目标类型是Comsumer。 forEach方法会自动的将几何元素逐个的传给Lambda表达式, 因此Lambda就可以遍历到几何元素了。 */ import java.util.ArrayList; import java.util.List; public class myList { public static void main(String[] args) { List strList=new ArrayList(); strList.add("Hello"); strList.add("World!!!"); strList.forEach(str-> System.out.println( ((String)str).length() )); } }
对forEachforEach方法会自动的将几何元素逐个的传给Lambda表达式,不是太明白就仔细看了看,复习了了Lambda式和forEach集合遍历。
1、ArrayList类与接口的关系:
ArrayList 实现了List接口,List的接口又继承了,Collection、Iterable,如下图:
2、JAVA8之后,Iterable接口新增了一个forEach(Comsumer action)默认方法
因为List接口继承了Iterable接口,所以List集合也可以直接调用该方法。
再看forEach()函数的参数,为Consumer接口,该接口就只有一个抽象方法
void accept(T t);,所以为函数式接口,可以用Lambda表达式实现。
实现了List的接口的类ArrayList,它重写了forEach方法源代码如下
@Override /*Consumer<? super E> action 泛型的类型通配符 <? extends E>表示泛型 是E或者E的子类(extends意义上:相当于≤) <? super E>表示泛型 是E或者E的父类(super意义上:相当于≥) */ public void forEach(Consumer<? super E> action) { //检查action不为空 Objects.requireNonNull(action); final int expectedModCount = modCount; @SuppressWarnings("unchecked") /*elementData的定义: transient Object[] elementData; 下面语句将elementData由Object[]转换为E[] */ final E[] elementData = (E[]) this.elementData; final int size = this.size; /*★★★★将会循环的调用Lambda表达式★★★★ (str-> System.out.println( ((String)str).length()) 把elementData[i]作为参数传给str,然后执行Lambda表达式 实现的语句 */ for (int i=0; modCount == expectedModCount && i < size; i++) { action.accept(elementData[i]); } if (modCount != expectedModCount) { throw new ConcurrentModificationException(); } }
相关文章推荐
- Java使用foreach遍历集合元素
- 使用foreach遍历集合元素
- c:forEach 遍历集合中的元素,判断是否是最后一个元素
- 使用foreach遍历集合元素
- 如何在遍历list集合中删除list集合中的元素
- c:forEach 遍历集合中的元素,判断是否是最后一个元素
- 跟王老师学集合(四):使用foreach循环遍历元素
- 如何在foreach中删除一个集合中的元素
- c:forEach 遍历集合中的元素属性详解,判断是否是最后一个元素,
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与LinkedHashSet类))
- 如何边遍历集合边删除元素--使用Iterator中的remove()方法
- c:forEach 遍历集合中的元素,判断是否是最后一个元素
- 如何正确在集合遍历的时候删除多个元素
- 实验心得:C#中当使用foreach对集合进行遍历时,不得改变集合的大小和元素的值
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
- java 使用foreach遍历集合元素的实例
- Java使用foreach遍历集合元素
- Java使用foreach遍历集合元素
- 如何实现在遍历集合的过程中删除其中的元素
- 如何在遍历中使用 iterator/reverse_iterator 删除元素