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);
    }
}
posted @ 2019-11-13 10:23  消灭猕猴桃  阅读(84)  评论(0编辑  收藏  举报