关于Stream流


关于Stream流


stream中间方法
中间方法指的是调用完成后会返回新的Stream流,可以继续使用(支持链式编程)。
Stream提供的常用中间方法
说明
Streamfilter(Predicate<?super T>predicate) 用于对流中的数据进行过滤。
Streamsorted() 对元素进行升序排序
StreamI>sorted(Comparator?super I>comparator) 按照指定规则排序
Streamlimit(long maxSize) 获取前几个元素
Streamskip(long n) 跳过几个元素
Streamdistinct() 去除流中重复的元素。
Streammap(Function<?superL,?extends R>mapper) 对元素进行加工,并返回对应的新流
static Streamconcat(Stream a, Stream b) 合并a和b两个流为一个流。

public class StreamTest2 {
    public static void main(String[] args) {
        //如何获取List集合的Stream流?
        List<String> names=new ArrayList<>();
        Collections.addAll(names,"张三丰","张无忌","周芷若","赵敏","张强");
        Stream<String>stream=names.stream();
        //如何获取Set集合的Stream流
        Set<String>set=new HashSet<>();
        Collections.addAll(set,"刘德华","张曼玉","蜘蛛精","马得","德玛西亚");
        Stream<String>stream1=set.stream();
        stream1.filter(s -> s.contains("德")).forEach(s -> System.out.println(s));
        //如何获取Map的Stream流
        Map<String,Double>map=new HashMap<>();
        map.put("古力娜扎",172.3);
        map.put("迪丽热巴",168.3);
        map.put("马尔扎哈",166.3);
        map.put("卡尔扎巴",168.3);
        Set<String>keys=map.keySet();
        Stream<String> ks=keys.stream();
        Collection<Double>valus=map.values();
        Stream<Double>vs=valus.stream();
        Set<Map.Entry<String,Double>>entries=map.entrySet();
        Stream<Map.Entry<String,Double>>kvs=entries.stream();
        kvs.filter(s->s.getKey().contains("巴")).forEach(s-> System.out.println(s));
        //如何获取数组的Stream流
        String[]names2={"张春山","东方不败","唐大山","独孤求败"};
        Stream<String>stream2=Arrays.stream(names2);
        Stream<String> names21=Stream.of(names2);
        names21.filter(s -> s.contains("山")).forEach(s -> System.out.println(s));
    }
}

stream的终极方法
·终结方法指的是调用完成后,不会返回新Stream了,没法继续使用流了。
Stream提供的常用终结方法
void forEach(Consumer action)
对此流运算后的元素执行遍历
1ong count()
统计此流运算后的元素个数
Optionalmax(Comparator<?super I>comparator)
获取此流运算后的最大值元素
0ptionalmin(Comparator<?super >comparator)
获取此流运算后的最小值元素

public class StreamTest3 {
    public static void main(String[] args) {
        List<Student>students=new ArrayList<>();

        Student s1=new Student(172.5,"蜘蛛精",26);
        Student s2=new Student(172.5,"蜘蛛精",26);
        Student s3=new Student(167.6,"紫霞",23);
        Student s4=new Student(169.0,"白晶晶",25);
        Student s5=new Student(183.5,"牛魔王",35);
        Student s6=new Student(168.5,"牛夫人",34);
        Collections.addAll(students,s1,s2,s3,s4,s5,s6);
        students.stream().sorted((o1, o2) -> Double.compare(o2.getHight(), o1.getHight())).forEach(student -> System.out.println(student));

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值