Java中的ArrayDeque forEach()方法

Java中的ArrayDeque forEach()方法

在Java中,使用ArrayDeque可以代替Stack和Queue。它是一个Array序列,具有动态伸缩的功能。它可以在两端添加和删除元素,因此可以用作堆栈、队列或双端队列。ArrayDeque的一个重要方法是forEach(),可以遍历ArrayDeque中所有元素并对其执行操作。

ArrayDeque类

Java中的ArrayDeque是Java Collections框架的一部分,是Deque接口的实现。而Deque是Queue接口的子接口,因此ArrayDeque实现了Queue和Deque的功能。可以将元素添加到两端,并将元素从两端移除,操作类似于Queue和Stack。ArrayDeque中的元素可以为空,并且数组默认大小是16,可以根据需要动态增加或减小。下面是一个简单的ArrayDeque示例:

import java.util.ArrayDeque;

public class ArrayDequeExample {
  public static void main(String[] args) {
    ArrayDeque<String> queue = new ArrayDeque<>();
    queue.add("A");
    queue.add("B");
    queue.add("C");
    System.out.println(queue);   // Output : [A, B, C]

    // Remove the elements from the front
    System.out.println(queue.remove());    // Output : A
    System.out.println(queue.remove());    // Output : B
    System.out.println(queue);   // Output : [C]

    // Remove the elements from the rear
    System.out.println(queue.removeLast());    // Output : C
    System.out.println(queue);   // Output : []
  }
}

forEach()方法

ArrayDeque类中的forEach()方法是Java 8中的新增方法。forEach()方法采用一个Lambda表达式作为参数,可以遍历ArrayDeque中的所有元素并对其执行操作。此方法返回void,因此不能获得结果。下面是一个使用forEach()方法的简单示例:

import java.util.ArrayDeque;

public class ArrayDequeExample {
  public static void main(String[] args) {
    ArrayDeque<String> queue = new ArrayDeque<>();
    queue.add("A");
    queue.add("B");
    queue.add("C");

    // Iterate over the queue
    queue.forEach(item -> System.out.println(item));
  }
}

上面的代码将ArrayDeque中的所有元素打印到控制台。

以下是使用forEach()方法的另一个示例,该示例会将元素转换为小写,并将其打印到控制台:

import java.util.ArrayDeque;

public class ArrayDequeExample {
  public static void main(String[] args) {
    ArrayDeque<String> queue = new ArrayDeque<>();
    queue.add("A");
    queue.add("B");
    queue.add("C");

    // Iterate over the queue
    queue.forEach(item -> {
      String lowerCaseItem = item.toLowerCase();
      System.out.println(lowerCaseItem);
    });
  }
}

forEach()方法与迭代器的比较

ArrayDeque还有一个方法,即iterator(),可以创建一个Iterator对象,该对象可以用于迭代ArrayDeque中的元素。与forEach()方法不同,迭代器可以使用remove()方法从中删除元素。下面是一个使用迭代器删除元素的示例:

import java.util.ArrayDeque;
import java.util.Iterator;

public class ArrayDequeExample {
  public static void main(String[] args) {
    ArrayDeque<String> queue = new ArrayDeque<>();
    queue.add("A");
    queue.add("B");
    queue.add("C");

    // Use an iterator to delete elements
    Iterator<String> iterator = queue.iterator();
    while (iterator.hasNext()) {
      String item = iterator.next();
      if (item.equals("B")) {
        iterator.remove();
      }
    }

    // Iterate over the queue
    queue.forEach(item -> System.out.println(item));
  }
}

Lambda表达式

Lambda表达式是Java 8中引入的新特性。它允许将函数作为方法参数传递。Lambda表达式不是一个线程,也不是一个类。它只是一个指向函数的引用。Lambda表达式允许在代码块中定义匿名函数,并将其传递给具有函数参数的方法。Lambda表达式可以使代码更加简洁易懂。

以下是Lambda表达式的通用语法:

(parameters) -> expression

(parameters) -> { statements; }

其中,parameters指定方法参数的类型和名称,expression是单个语句的表达式,而statements是一系列语句的代码块。

Lambda表达式还可以使用方法引用,可以指向一个已经存在的方法。方法引用的通用语法如下:

Class::methodName

forEach()方法的性能

Java中的forEach()方法是使用Lambda表达式并行处理元素的一种方法。它可以更快地处理元素,因为它可以将工作分配给多个处理器来处理。但是,forEach()方法不一定比传统的循环更快。在某些情况下,使用传统的循环可能会更快。

示例代码

import java.util.ArrayDeque;

public class ArrayDequeExample {
  public static void main(String[] args) {
    ArrayDeque<String> queue = new ArrayDeque<>();
    queue.add("A");
    queue.add("B");
    queue.add("C");

    // Iterate over the queue
    queue.forEach(item -> {
      String lowerCaseItem = item.toLowerCase();
      System.out.println(lowerCaseItem);
    });
  }
}

结论

在Java中,使用ArrayDeque是一种快速、有效的管理元素的方法。可以使用forEach()方法来操作ArrayDeque中的所有元素,并使用Lambda表达式对它们进行操作。但是,forEach()方法不一定比传统的循环更快。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程