zoukankan      html  css  js  c++  java
  • Java 集合操作

    遍历

    使用Lambda表达式遍历集合

    public class CollectionEach {
        public static void main(String[] args) {
            //创建一个集合
            var a = new HashSet();
            a.add(1);
            a.add(2);
            a.add(3);
            // 调用forEach()方法遍历集合
            a.forEach(obj -> System.out.println("迭代集合元素:" + obj));
        }
    }
    

    使用Iterator遍历集合元素

    public class IteratorTest {
        public static void main(String[] args) {
            //创建一个集合
            var a = new HashSet();
            a.add(1);
            a.add(2);
            a.add(3);
            //获取集合对应的迭代器
            var it = a.iterator();
            while (it.hasNext()){
                //it.next()返回数据类型式object,需要强制转换
                var each = (int)it.next();
                System.out.println(each);
                if (each == 3){
                    //从集合中删除3
                    it.remove();
                }
            }
            System.out.println(a);
        }
    }
    

    使用Lambda表达式遍历Iterator

    public class IteratorEach {
        public static void main(String[] args) {
            //创建一个集合
            var a = new HashSet();
            a.add(1);
            a.add(2);
            a.add(3);
            //获取集合对应的迭代器
            var it = a.iterator();
            it.forEachRemaining(obj -> System.out.println("迭代集合元素:" + obj));
        }
    }
    

    使用foreach遍历集合元素

    public class ForeachTest {
        public static void main(String[] args) {
            //创建一个集合
            var a = new HashSet();
            a.add(1);
            a.add(2);
            a.add(3);
            for (var each : a){
                System.out.println((int)each);
            }
        }
    }
    

    使用Predicate接口过滤集合

    public class ForeachTest {
        public static void main(String[] args) {
            //创建一个集合
            var a = new HashSet();
            a.add(1);
            a.add(2);
            a.add(3);
            for (var each : a){
                System.out.println((int)each);
            }
            //使用Lambda表达式(目标类型是Predicate)过滤集合
            a.removeIf( ele -> (int)ele < 2);
            System.out.println(a);
        }
    }
    
    public class PredicateTest2 {
        public static void main(String[] args) {
            //创建一个集合
            var a = new ArrayList();
            a.add(1);
            a.add(2);
            a.add(3);
            a.add(1);
            a.add(2);
            System.out.println(callAll(a, ele -> (int)ele == 1));
            System.out.println(callAll(a, ele -> (int)ele == 2));
            System.out.println(callAll(a, ele -> (int)ele == 3));
        }
    
        public static int callAll(Collection a, Predicate p){
            int total = 0;
            for (var obj : a){
                //使用Predicate的test()方法判断该对象是否满足Predicate指定的条件
                if (p.test(obj)){
                    total++;
                }
            }
            return total;
        }
    }
    

    使用Stream操作集合

    public class IntStreamTest {
        public static void main(String[] args) {
            var is = IntStream.builder()
                    .add(20)
                    .add(13)
                    .add(-2)
                    .add(18)
                    .build();
            //下面调用的聚集方法只能执行一次
    //        System.out.println("is所有元素的最大值:"+is.max().getAsInt());
    //        System.out.println("is所有元素的最小值:"+is.min().getAsInt());
    //        System.out.println("is所有元素的总和:"+is.sum());
    //        System.out.println("is所有元素的总数:"+is.count());
    //        System.out.println("is所有元素的平均值:"+is.average());
    //        System.out.println("is所有元素的平方是否都大于20:"
    //                + is.allMatch(ele -> ele * ele > 20));
    //        System.out.println("is 是否任何元素的平方都都大于20:"
    //                + is.anyMatch(ele -> ele * ele > 20));
            //将is映射成一个新Stream, 新Stream每个元素是原来的2倍加1
            var newIs = is.map(ele -> ele * 2 + 1);
            newIs.forEach(System.out::println);
        }
    }
    
    public class CollectionStream {
        public static void main(String[] args) {
            //创建一个集合
            var a = new ArrayList();
            a.add(1);
            a.add(2);
            a.add(3);
            a.add(1);
            a.add(2);
            //统计1,2,3的数量
            System.out.println(a.stream().filter(ele -> (int)ele == 1).count());
            System.out.println(a.stream().filter(ele -> (int)ele == 2).count());
            System.out.println(a.stream().filter(ele -> (int)ele == 3).count());
            a.stream().mapToInt(ele -> (int)ele * 2).forEach(System.out::println);
        }
    }
    
  • 相关阅读:
    qt映射器QSignalMapper的理解
    win10环境下安装Qt4.8、PyQt及development tools
    BZOJ1040 基环森林 找环+基础树形DP
    贪心 BZOJ1034
    HDU5293 树链剖分+树形DP
    BZOJ 1028 BZOJ 1029 //贪心
    BZOJ1025
    仙人掌图判定及求直径HDU3594 BZOJ1023
    BZOJ1021
    BZOJ1022
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860118.html
Copyright © 2011-2022 走看看