Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List 如何一边遍历,一边删除? #152

Open
Sogrey opened this issue Jun 26, 2020 · 0 comments
Open

List 如何一边遍历,一边删除? #152

Sogrey opened this issue Jun 26, 2020 · 0 comments
Labels
Java java相关
Projects

Comments

@Sogrey
Copy link
Owner

Sogrey commented Jun 26, 2020

主要有以下3种方法:

  • 使用Iterator的remove()方法
  • 使用for循环正序遍历
  • 使用for循环倒序遍历

使用Iterator的remove()方法

使用Iterator的remove()方法的实现方式如下所示:

public static void main(String[] args) {
    List<String> platformList = new ArrayList<>();
    platformList.add("博客园");
    platformList.add("CSDN");
    platformList.add("掘金");

    Iterator<String> iterator = platformList.iterator();
    while (iterator.hasNext()) {
        String platform = iterator.next();
        if (platform.equals("博客园")) {
            iterator.remove();
        }
    }

    System.out.println(platformList);
}

输出结果为:

[CSDN, 掘金]

使用for循环正序遍历

使用for循环正序遍历的实现方式如下所示:

public static void main(String[] args) {
    List<String> platformList = new ArrayList<>();
    platformList.add("博客园");
    platformList.add("CSDN");
    platformList.add("掘金");

    for (int i = 0; i < platformList.size(); i++) {
        String item = platformList.get(i);

        if (item.equals("博客园")) {
            platformList.remove(i);
            i = i - 1;
        }
    }

    System.out.println(platformList);
}

使用for循环倒序遍历

使用for循环倒序遍历的实现方式如下所示:

public static void main(String[] args) {
    List<String> platformList = new ArrayList<>();
    platformList.add("博客园");
    platformList.add("CSDN");
    platformList.add("掘金");

    for (int i = platformList.size() - 1; i >= 0; i--) {
        String item = platformList.get(i);

        if (item.equals("掘金")) {
            platformList.remove(i);
        }
    }

    System.out.println(platformList);
}
@Sogrey Sogrey added the Java java相关 label Jun 26, 2020
@Sogrey Sogrey added this to java基础 in Java基础 Jun 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Java java相关
Projects
Java基础
java基础
Development

No branches or pull requests

1 participant