如何在Java中迭代LinkedList?


LinkedHashMap类类似于HashMap,但与HashMap相比,它具有一个附加功能。LinkedList类属于java.util包。

LinkedList使用双向链表来存储其元素。鉴于我们的操作通常包括插入和删除,LinkedList是最佳选择。

java.util包包含LinkedList集合框架。它作为非连续LinkedList数据结构的实现,在内存中保存元素。

使用的方法

您可以使用五种主要方法来迭代HashMap:

  • 使用for循环

  • 使用while循环

  • 使用增强型for循环或for-each循环

  • 使用迭代器

  • 使用forEach()方法

方法1:使用for循环迭代LinkedList

for循环是迭代Java中LinkedList元素的最简单方法。为了获取列表中元素的数量,我们使用size()方法。然后将使用for循环迭代这些元素。

size()

这段代码创建了一个名为“list”的LinkedList对象,并向其中添加了四个元素:“Java”、“c语言”、“Python”和“Ruby”。然后它使用for循环迭代链表并打印每个元素。

算法

  • 步骤1 - 从java.util包导入必要的LinkedList类。

  • 步骤2 - 在iterateLinkedList包中创建一个名为LinkedListEx1的公共类。

  • 步骤3 - 定义main方法。

  • 步骤4 - 声明并初始化一个名为list的空LinkedList对象来存储字符串。

  • 步骤5 - 使用add方法向列表添加四个元素(“Java”、“C语言”、“Python”和“Ruby”)。

  • 步骤6 - 开始遍历链表的元素。您可以使用for循环来完成。

  • 步骤7 - 在每次迭代中,使用get方法检索当前索引处的元素。然后将其保存在element变量中。

  • 步骤8 - 打印element变量的值,该变量表示列表中的每个字符串。

示例

package iterateLinkedList; 
import java.util.LinkedList;

public class LinkedListEx1 {

   public static void main(String[] args) {
   
      // Generate a generic LinkedList object of string type.
      LinkedList<String> list = new LinkedList<String>(); // an empty list.

      // Adding elements in the list.
      list.add("Java");
      list.add("C Language");
      list.add("Python");
      list.add("Ruby");

      // Iterating linked list using for-each loop.
      System.out.println("For-each loop Method");
      for (String element : list) {
         System.out.println(element);
      }
   }
}

输出

For-each loop Method
Java
C Language
Python
Ruby

方法2:使用while循环迭代

while循环是迭代链表条目的第二种方法。它对于LinkedList中少量数据有效。

get()

此代码示例生成一个名为“cities”的LinkedList。然后向其中添加四个字符串。然后它使用while循环迭代链表并打印每个元素。

算法

  • 步骤1 - 创建一个名为“cities”的空LinkedList。

  • 步骤2 - 将字符串“Bangalore”、“Mumbai”、“Kolkatta”和“Chennai”添加到cities列表。

  • 步骤3 - 指定一个计数器变量“num”,其默认值为0。

  • 步骤4 - 进入一个while循环,只要cities列表的大小大于“num”的值,该循环就继续。

  • 步骤5 - 在每次迭代中,使用get方法检索当前索引(由“num”确定)处的元素并打印它。

  • 步骤6 - 将“num”的值增加1。

  • 步骤7 - 结束循环和程序。

示例

package iterateLinkedList;

import java.util.LinkedList;

public class Tutorialspoint {
   public static void main(String[] args) {
      // generate a LinkedList object of string type.
      LinkedList<String> cities = new LinkedList<String>();

      // Addition of elements of only string type.
      cities.add("Bangalore");
      cities.add("Mumbai");
      cities.add("Kolkatta");
      cities.add("Chennai");

      System.out.println("**Using While Loop for iteration of LinkedList **");
      int num = 0;
      while (cities.size() > num) {
         System.out.println(cities.get(num));
         num++;
      }
   }
}

输出

**Using While Loop for iteration of LinkedList **
Bangalore
Mumbai
Kolkatta
Chennai

方法3:使用增强型for循环迭代

使用for-each循环或增强型for循环迭代Java中的LinkedList是另一种方法。在此函数中,我们使用增强型for循环直接迭代LinkedList的元素。

for()

这段代码创建一个LinkedList并向其中添加三个字符串。然后它使用增强型for循环迭代LinkedList的元素并打印它们。

算法

  • 步骤1 - 从java.util包导入所需的LinkedList类。

  • 步骤2 - 创建公共类Tutorialspoint。

  • 步骤3 - 创建main方法。

  • 步骤4 - 创建一个名为linkedList的LinkedList对象来存储字符串。

  • 步骤5 - 使用add方法将字符串“Welcome”、“to”和“Tutorialspoint”添加到链表。

  • 步骤6 - 调用iterateUsingEnhancedForLoop方法并将linkedList作为参数传递。

  • 步骤7 - 定义iterateUsingEnhancedForLoop方法,该方法接受字符串的LinkedList作为参数。

  • 步骤8 - 打印初始消息“使用增强型for循环迭代LinkedList:”。

  • 步骤9 - 使用增强型for循环迭代linkedList中的每个元素(listElement)。

  • 步骤10 - 在每次迭代中,打印listElement的值,后跟一个空格。

  • 步骤11 - 关闭循环和程序。

示例

import java.util.LinkedList;

public class Tutorialspoint {
   public static void main(String[] args){

      LinkedList<String> linkedList = new LinkedList<>();

      linkedList.add("Welcome");
      linkedList.add("to");
      linkedList.add("Tutorialspoint");

      iterateUsingEnhancedForLoop(linkedList);
   }

   public static void iterateUsingEnhancedForLoop(LinkedList<String> linkedList){

      System.out.print("Iterating the LinkedList with the help of enhanced for loop : ");
      for (String listElement : linkedList) {
         System.out.print(listElement + " ");
      }
   }
}

输出

Iterating the LinkedList with the help of enhanced for loop : Welcome to Tutorialspoint

方法4:使用迭代器

使用迭代器是最好的方法之一。它只不过是使用iterable接口提供的iterator()方法来创建一个Iterator对象。然后我们可以使用此Iterator对象来迭代LinkedList的元素。

while()

此代码示例创建一个LinkedList并向其中添加五个字符。然后它使用Iterator迭代LinkedList并打印每个字符。

算法

  • 步骤1 - 从java.util包导入必要的Iterator和LinkedList类。

  • 步骤2 - 定义一个名为Tutorialspoint的公共类。

  • 步骤3 - 定义main方法。

  • 步骤4 - 创建一个名为list的LinkedList对象来存储字符。

  • 步骤5 - 使用add方法将字符'V'、'W'、'X'、'Y'和'Z'添加到LinkedList。

  • 步骤6 - 打印初始消息“使用迭代器进行迭代”。

  • 步骤7 - 使用list的iterator方法创建一个Iterator对象itr。

  • 步骤8 - 进入一个while循环,只要LinkedList中还有更多元素(itr.hasNext()),该循环就继续。

  • 步骤9 - 在每次迭代中,从Iterator(itr.next())检索下一个元素并将其存储在Character类型的obj变量中。

  • 步骤10 - 打印obj的值。

示例

package iterateLinkedList;

import java.util.Iterator;
import java.util.LinkedList;

public class Tutorialspoint {
   public static void main(String[] args) {
      LinkedList<Character> list = new LinkedList<>();
      list.add('V');
      list.add('W');
      list.add('X');
      list.add('Y');
      list.add('Z');

      System.out.println("Using Iterator for iteration");
      Iterator<Character> itr = list.iterator();
      while (itr.hasNext()) {
         Character obj = itr.next();
         System.out.println(obj);
      }
   }
}

输出

Using Iterator for iteration
V
W
X
Y
Z

方法5:使用forEach()

Java 8标志着forEach()方法的首次亮相。直到所有项目都已处理或过程遇到错误,每个Iterable元素都将受到任务执行的约束。

forEach()

这段代码创建一个LinkedList并向其中添加五个整数。然后使用forEach方法迭代LinkedList的元素,并显示它们。

算法

  • 步骤1 - 从java.util包导入必要的LinkedList类。

  • 步骤2 - 定义一个名为TLP的公共类。

  • 步骤3 - 定义main方法。

  • 步骤4 - 创建一个名为linkedList的LinkedList对象来存储整数。

  • 步骤5 - 使用add方法将整数100、200、300、400和500添加到LinkedList。

  • 步骤6 - 调用iterateUsingForEach方法并将linkedList作为参数传递。

  • 步骤7 - 定义iterateUsingForEach方法,该方法接受整数的LinkedList作为参数。

  • 步骤8 - 打印初始消息“使用forEach函数迭代LinkedList:”。

  • 步骤9 - 使用LinkedList的forEach函数,传递一个lambda表达式,该表达式打印每个元素,后跟一个空格。

  • 步骤10 - 终止程序

示例

import java.util.LinkedList;

public class TLP {
   public static void main(String[] args){

      LinkedList<Integer> linkedList = new LinkedList<>();

      linkedList.add(100);
      linkedList.add(200);
      linkedList.add(300);
      linkedList.add(400);
      linkedList.add(500);

      iterateUsingForEach(linkedList);
   }

   public static void iterateUsingForEach(LinkedList<Integer> linkedList){
      System.out.print("Iteration of the LinkedList by employing for each function : ");
      linkedList.forEach((element) -> System.out.print(element + " "));
   }
}

输出

Iteration of the LinkedList by employing for each function : 100 200 300 400 500

结论

LinkedHashMap是HashMap的一个特殊子类,它包含一个双向链表,该链表连接其所有条目。与HashMap不同,LinkedHashMap保留元素插入的顺序。此特性使LinkedHashMap成为需要按其原始插入顺序遍历映射条目的应用程序的理想选择。

更新于:2023年10月19日

浏览量:152

开启你的职业生涯

完成课程获得认证

开始学习
广告