举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java集合遍历删除指定元素 Java 集合遍历

java集合遍历删除指定元素 Java 集合遍历

2023-05-28 18:18 Java教程

java集合遍历删除指定元素 Java 集合遍历

java集合遍历删除指定元素

Java集合遍历删除指定元素是指在使用集合时,通过遍历集合中的元素,找到满足条件的元素,然后将其从集合中删除。

Java集合遍历删除指定元素的方法有很多,下面以ArrayList为例,介绍一种常用的方法。

// 定义一个ArrayList
ArrayList<String> list = new ArrayList<String>(); 
list.add("a"); 
list.add("b"); 
list.add("c"); 
list.add("d"); 
list.add("e"); 
// 遍历ArrayList,如果当前元素是“c”,就将其从集合中删除 
for (int i = 0; i < list.size(); i++) { 
    if (list.get(i).equals("c")) { 
        list.remove(i);  // 将当前位置的元素删除 
    }   // 注意此处不能使用break语句,因为remove()之后会对数组进行重新排序   // 所以必须要将数组中所有的“c”都删除才行   }   System.out.println(list); // 输出[a, b, d, e]   

Java 集合遍历

Java集合教程 - Java集合遍历


在Java Collections Framework中,不同类型的集合使用不同类型的数据结构以不同的方式存储它们的元素。

一些集合对它们的元素有排序,有些没有。集合框架提供了遍历集合的以下方法:

  • 使用迭代器
  • 使用for-each循环
  • 使用forEach()方法

使用迭代器

集合提供了一个迭代器来遍历其所有元素。

迭代器可以对集合执行以下三个操作:

  • 检查是否有尚未访问的元素。
  • 访问集合中的下一个元素。
  • 删除集合的最后访问元素。

Java中的迭代器是 Iterator< E> 接口的一个实例。

我们可以使用Collection接口中的iterator()方法获取集合的迭代器。

以下代码创建一个字符串列表,并获取列表的迭代器:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    // Create a list of strings
    List<String> names = new ArrayList<>();

    // Get an iterator for the list
    Iterator<String> nameIterator = names.iterator();
  }
}

迭代器< E> 接口包含以下方法:

boolean hasNext()
E next()
default void  remove()
default void  forEachRemaining(Consumer<? super  E> action)

如果集合中有更多元素要迭代, hasNext()方法将返回true。否则,它返回false。

next()方法返回集合中的下一个元素。我们应该在调用 next()方法之前调用 hasNext()方法。如果没有, next()方法会抛出NoSuchElementException异常。


例子

通常, hasNext() next()方法在循环中一起使用。以下代码使用迭代器打印列表的所有元素:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    // Create a list of strings
    List<String> names = new ArrayList<>();
    names.add("A");
    names.add("B");
    names.add("C");
    // Get an iterator for the list
    Iterator<String> nameIterator = names.iterator();
    // Iterate over all elements in the list
    while (nameIterator.hasNext()) {
      // Get the next element from the list
      String name = nameIterator.next();
      System.out.println(name);
    }

  }
}

上面的代码生成以下结果。

remove()方法删除 next()方法最后返回的元素。每次调用next()方法只能调用一次 remove()方法。

如果对于每个 next()方法或在第一次调用next()之前被多次调用 remove()方法,它会抛出一个 IllegalStateException异常。

remove()方法的支持是可选的。remove()方法可能会抛出一个 UnsupportedOperationException 异常。

例2

以下代码使用迭代器遍历列表的所有元素,并使用remove()方法删除该元素。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    // Create a list of strings
    List<String> names = new ArrayList<>();
    names.add("A");
    names.add("B");
    names.add("C");

    Iterator<String> nameIterator = names.iterator();
    // Iterate over all elements in the list
    while (nameIterator.hasNext()) {
      // Get the next element from the list
      String name = nameIterator.next();
      System.out.println(name);
      nameIterator.remove();
    }
    System.out.println(names);
  }
}

上面的代码生成以下结果。

例3

forEachRemaining()方法对集合中尚未由迭代器访问的每个元素执行操作。

action指定为 Consumer

以下代码显示如何打印列表的所有元素。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    // Create a list of strings
    List<String> names = new ArrayList<>();
    names.add("A");
    names.add("B");
    names.add("C");

    Iterator<String> nameIterator = names.iterator();
    nameIterator.forEachRemaining(System.out::println);
  }
}

上面的代码生成以下结果。

迭代器注意事项

迭代器是一次性对象。我们不能重置迭代器,它不能被重用。

要再次遍历同一集合的元素,请通过调用集合的iterator()方法来创建一个新的Iterator。

使用for-each循环

我们可以使用for-each循环遍历集合的元素。

我们可以使用for-each循环遍历任何实现类实现Iterable接口的集合。

for-each循环的一般语法如下:

Collection<T> yourCollection  = ;
for(T  element : yourCollection)  {
}

在幕后,for-each循环获取迭代器并调用hasNext()和next()方法。

import java.util.ArrayList;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    // Create a list of strings
    List<String> names = new ArrayList<>();
    names.add("A");
    names.add("B");
    names.add("C");

    for (String name : names) {
      System.out.println(name);
    }

  }
}

上面的代码生成以下结果。

for-each注意事项

for-each循环有几个限制。

我们不能使用for-each循环从集合中删除元素。

以下代码将抛出ConcurrentModificationException异常:

List<String> names = get   a  list;
for(String name : names)  {
    names.remove(name);// Throws a  ConcurrentModificationException 
}

对于for-each循环,我们没有办法从集合的中间开始。

for-each循环不提供访问先前访问的元素的方式。

使用forEach()方法

Iterable接口包含一个新的 forEach(Consumer action)方法。

该方法遍历所有元素并应用操作。

forEach()方法在从 Collection 接口继承的所有集合类型中都可用。

import java.util.ArrayList;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    // Create a list of strings
    List<String> names = new ArrayList<>();
    names.add("A");
    names.add("B");
    names.add("C");

    names.forEach(System.out::println);
  }
}

上面的代码生成以下结果。


阅读全文
以上是编程学为你收集整理的java集合遍历删除指定元素 Java 集合遍历全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部