java forEach使用

java forEach使用

foreach 是 Java 中的一种语法糖,目的是方便程序员开发和提高性能。其实就是编译期间以特定的字节码或特定的方式来对这些语法进行处理。

1.普通数组forEach用法

对于数组,foreach 循环实际上还是用的普通的 for 循环,怎么说foreach 循环就是for 循环

int[] arr= {1,2,3,4,5}
//forEach写法(效果跟下面同等)
for(int i:arr)
	System.out.println("数组元素:"+i);
		
//普通for循环
for(int i=0;i<arr.length;i++) 
	System.out.println("数组元素:"+arr[i]);

2.集合类forEach用法

对于集合,foreach 循环实际上是用的 iterator 迭代器迭代,写法也一样。

ArrayList<Integer> arrlist = new ArrayList<Integer>();
arrlist.add(1);
arrlist.add(2);
arrlist.add(3);
//forEach用法
for(Integer a:arrlist)
	System.out.println("集合数据:"+a);
	
//迭代器循环
for(Iterator<Integer> it = arrlist.iterator();it.hasNext();)
	System.out.println("集合数据:"+it.next());

3.forEach+lambda

这里调用ArrayList类的forEach方法,然后传入lambda表达式

List<String> items = new ArrayList<>();
	items.add("A");
	items.add("B");
	items.add("C");

	//lambd+forEach方法
	items.forEach(item->System.out.println("集合数据:"+item));
	//forEach方法来自Iterable接口其他类重新
	
	
//这里是ArrayList重写forEach方法源码
	public void forEach(Consumer<? super E> action) {
        Objects.requireNonNull(action);
        final int expectedModCount = modCount;
        final Object[] es = elementData;
        final int size = this.size;
        for (int i = 0; modCount == expectedModCount && i < size; i++)
            action.accept(elementAt(es, i));
        if (modCount != expectedModCount)
            throw new ConcurrentModificationException();
    }

接口方法描述:

default void forEach(Consumer<? super T> action)对Iterable的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。 除非实现类另有规定,否则按照迭代的顺序执行操作(如果指定了迭代顺序)。 动作抛出的异常被转发给呼叫者。 
实现要求: 
默认实现的行为如下: 
   for (T t : this) action.accept(t);  

4.其他调用方法

//System.out::println这个到底是什么东东,请参考下面博客
items.forEach(System.out::println);

博客:https://blog.csdn.net/nrsc272420199/article/details/84727347

猜你喜欢

转载自blog.csdn.net/qq_43203949/article/details/105713145
今日推荐