• java循环删除List元素的方法总结


    1、for循环
    2、迭代器
    3、过渡法
    import java.util.*;
    
    /**
     * Created by HP on 2018/8/2.
     */
    public class Test {
    
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("c");
            list.add("d");
    
            List<String> list1 = new ArrayList<>();
            list1.add("a");
            list1.add("b");
            list1.add("c");
            list1.add("d");
    
            List<String> list2 = new ArrayList<>();
            list2.add("a");
            list2.add("b");
            list2.add("c");
            list2.add("d");
    
            System.out.println(delSegByFor(list));
            System.out.println(delSegByIt(list1));
            System.out.println(delSegByUsingAnotherList(list2));
    
        }
    
    
        /**
         *  通过for循环,需要注意的是,
         *  remove一个元素之后,list的长度改变,下一个元素的位置也改变,
         *  所以需要向前移位,以保证正常遍历所有元素
         */
        private static List<String> delSegByFor(List<String> list){
            for(int i = 0;i < list.size(); i++){
                String seg = list.get(i);
                if("b".equals(seg) || "c".equals(seg)){
                    list.remove(i);
                    i--;
                }
            }
            return list;
        }
    
        /**
         *  通过迭代器,容易理解,不易出错,推荐使用
         */
        private static List<String> delSegByIt(List<String> list){
            Iterator<String> it = list.iterator();
            while (it.hasNext()){
                String seg = it.next();
                if("b".equals(seg) || "c".equals(seg)){
                    it.remove();
                }
            }
            return list;
        }
    
        /**
         *  该方法是通过先将需要删除的元素存入单独的list中,
         *  调用源list的removeAll方法,删除目标元素
         */
        private static List<String> delSegByUsingAnotherList(List<String> list){
            List<String> remove = new ArrayList<>();
            for(String seg:list){
                if("b".equals(seg) || "c".equals(seg)){
                    remove.add(seg);
                }
            }
            list.removeAll(remove);
            return list;
        }
    
    
    }
    

    运行结果如下图:

  • 相关阅读:
    POJ 1511
    POJ 1125
    POJ 2240
    POJ 1459
    POJ 1274
    POJ 1789
    POJ 2485,1258
    POJ 1236
    POJ 1273
    Ruby on Rails 观后感
  • 原文地址:https://www.cnblogs.com/caozz/p/10107376.html
Copyright © 2020-2023  润新知