Java大数据之路--集合-流结构Stream、泛型上下限表达

  • Stream


用于操作集合元素的流式结构,提供了大量的函数式接口方便使用---jdk1.8新特性 。

泛型:参数化类型----jdk1.5出现的。泛型可以支持任意引用数据类型,泛型的擦除在编译时期

public class StreamDemo {
    public static void main(String[] args) {
        //创建集合对象
        List<String> list = new ArrayList<>();
        list.add("C");
        list.add("Python");
        list.add("C++");
        list.add("C#");
        list.add("Java");
        list.add("Go");
        list.add("VB");
        list.add("PHP");
        //筛选出以C开头的元素
        //遍历集合元素
//        for (String string:list) {
//            //判断是否以C开头
//            if (string.startsWith("C")){
//                System.out.println(string);
//            }
//        }
        //获取流式结构
        Stream<String> s=list.stream();
//        s.filter(new Predicate<String>() {
//            //重写方法进行筛选元素
//            @Override
//            public boolean test(String s) {
//                return s.startsWith("C");
//            }
//        }).forEach(new Consumer<String>() {
//            //重写方法把筛选的元素进行输出
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
        //Lambda表达式
//        s.filter(str->str.startsWith("C")).sorted((str1,str2)->str2.compareTo(str1))//排序
//                .forEach(str-> System.out.println(str));
        //统计匹配数
        System.out.println(s.filter(str->str.startsWith("C")).count());
    }
}

 自定义泛型

public class TypeDemo {
    public static void main(String[] args) {
        TDemo<String> td = new TDemo<>();
        //属性类型确定了
        td.t="avc";
        td.m(new Integer(0));
        td.m("acx");
        td.m(true);
        td.m(2.3);
    }

}
//自定义泛型类
//类名<大写字母>
/*
* E ---elements元素
* T----Type类型
* R----Result结果
* K----键
* V----值
* */
class TDemo<E>{
    //属性
    E t;//属性类型可以是任意的引用类型
    //给定的引用类型可能不能直接创建对象,比如接口
    //E t = new E();
    //泛型K可以当做参数的属性类型,可以接口任意的引用类型
    public <K> void m(K i){
        System.out.println(i.getClass()); //允许传入不同类型的参数
    }
}

泛型上下限

public class TypeDemo {
    public static void main(String[] args) {
        //
        List<Integer> list1 = new ArrayList<>();
        //
        list1.add( 12 );
        list1.add( 122 );
        list1.add( 212 );
        list1.add( 312 );
        list1.add( 112 );
        //集合对象
        List<Double> list2 = new ArrayList<>();
        //
        list2.add(1.0);
        list2.add(1.2);
        list2.add(2.1);
        list2.add(6.3);
        list2.add(1.5);
        m(list1);
        m(list2);
    }
    //只遍历数字类型的集合
    //数字包装类的统一父类是Number
    //泛型没有向上造型
    //表示最大在Number类型 <? extends  Number> ----可以传入的类型包括 本类/本接口或者子类以及子接口
    //泛型的上限
    public static void m(List<? extends  Number> list){
        for (Object object: list) {
            System.out.println(object);
        }
    }
    //泛型的下限
    //传入的类型最小类型是String
    //<? super 类/接口>----可以传入的类型要么是本类/本接口,或者是父类以及父接口
    public void n(List<? super String> list){
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值