当前位置:   article > 正文

循环删除List中的元素_list 循环删除

list 循环删除

错误的示范

  1. public static void main(String[] args) {
  2. List<String> platformList = new ArrayList<>();
  3. platformList.add("博客园");
  4. platformList.add("CSDN");
  5. platformList.add("掘金");
  6. for (String platform : platformList) {
  7. if (platform.equals("博客园")) {
  8. platformList.remove(platform);
  9. }
  10. }
  11. System.out.println(platformList);
  12. }

主要原因就是,删除后,list对象发生变化,下标也变了。

正确的方式一:for循环,同时减少下标

  1. public static void main(String[] args) {
  2. List<String> platformList = new ArrayList<>();
  3. platformList.add("博客园");
  4. platformList.add("CSDN");
  5. platformList.add("掘金");
  6. for (int i = 0; i < platformList.size(); i++) {
  7. String item = platformList.get(i);
  8. if (item.equals("博客园")) {
  9. platformList.remove(i);
  10. i = i - 1;
  11. }
  12. }
  13. System.out.println(platformList);
  14. }

正确的方式二:Iterator对象的remove

  1. public static void main(String[] args) {
  2. List<String> platformList = new ArrayList<>();
  3. platformList.add("博客园");
  4. platformList.add("CSDN");
  5. platformList.add("掘金");
  6. Iterator<String> iterator = platformList.iterator();
  7. while (iterator.hasNext()) {
  8. String platform = iterator.next();
  9. if (platform.equals("博客园")) {
  10. iterator.remove();
  11. }
  12. }
  13. System.out.println(platformList);
  14. }

正确方式三:for循环,倒叙

  1. public static void main(String[] args) {
  2. List<String> platformList = new ArrayList<>();
  3. platformList.add("博客园");
  4. platformList.add("CSDN");
  5. platformList.add("掘金");
  6. for (int i = platformList.size() - 1; i >= 0; i--) {
  7. String item = platformList.get(i);
  8. if (item.equals("掘金")) {
  9. platformList.remove(i);
  10. }
  11. }
  12. System.out.println(platformList);
  13. }

正确方式四:stream filter过滤

  1. public static void main(String[] args) {
  2. List<String> platformList = new ArrayList();
  3. platformList.add("博客园");
  4. platformList.add("CSDN");
  5. platformList.add("掘金");
  6. platformList = platformList.stream().filter(e -> !e.startsWith("博客园")).collect(Collectors.toList());
  7. System.out.println(platformList);
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/958013
推荐阅读
相关标签
  

闽ICP备14008679号