java——Steam流

目录

前言:

创建单列集合: 

模糊匹配:

单列集合steam流:

双列集合Steam流:

使用entrySet:

零散的数据如何获取Stream流?

单列集合Steam流的各种方法:

    System.out.println("------filter-------");//筛选

    System.out.println("------limit-------");//获取前几个元素

    System.out.println("------skip-------");//跳过前几个元素

    System.out.println("------distinct-------");//去重

    System.out.println("-----concat---------");//流的合并

  输出打印

   计算集合Stream中的元素个数

    System.out.println("------toArray-------");

    System.out.println("----------tolist--------")

 //对Stream流中的数据进行收集

    System.out.println("-----------toMap--------");

结尾: 


前言:

       深入了解 Java——Stream 都将为你开启一扇通往新世界的大门。在这篇博客中,我们将一同踏上探索 Stream 的奇妙旅程,挖掘它的潜力,见证它如何重塑我们的 Java 编程体验。

创建单列集合: 

ArrayList<String> list = new ArrayList<String>();
list.add("张无忌");
list.add("张三丰");
list.add("张弩");
list.add("小龙女");
list.add("柯镇恶");
list.add("张强");
list.add("赵构");

模糊匹配:

list.stream().filter(name->name.startsWith("张")).filter(name->name.length()==3).forEach(name-> System.out.println(name));

单列集合steam流:

System.out.println("--------单列集合----------");
list.stream().forEach(name-> System.out.print(name+" "));
System.out.println();

双列集合Steam流:

双列集合不能直接调用steam流

创建双列集合:

System.out.println("-------------双列集合----------");
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("zhangsan",1);
map.put("lisi",2);
map.put("wangwu",3);
map.put("zhaoliu",4);

双列集合Stream:

map.keySet().stream().forEach(key-> System.out.print(key+"="+map.get(key)+" "));

使用entrySet:
map.entrySet().stream().forEach(s-> System.out.print(s.getValue()+" "));
System.out.println();

System.out.println("-------------数组-------------");
int []arr={1,2,3,4,5};
String []arr1={"a","b","c"};

Arrays.stream(arr).forEach(s-> System.out.print(s+" "));
Arrays.stream(arr1).forEach(s-> System.out.print(s+" "));

System.out.println();

System.out.println("---------零散数据---------")


零散的数据如何获取Stream流?

细节:of方法
1.of方法是一个可变参数,可以传递一堆零散的数据,也可以传递数组
但是数组必须是引用数据类型的,如果是基本数据类型,他会把整个数组当作是一个元素,然后输出的就是地址值

Stream.of(1,5,9,6,33).forEach(s-> System.out.print(s+" "));
Stream.of("a","b","c").forEach(s-> System.out.print(s+" "));

System.out.println();
Stream.of(arr).forEach(s-> System.out.print(s+" "));//基本数据类型,输出的是地址值
System.out.println();
Stream.of(arr1).forEach(s-> System.out.print(s+" "));//引用数据类型,输出的就是他们里面的元素

单列集合Steam流的各种方法:

ArrayList<String> list = new ArrayList<String>();
    Collections.addAll(list,"张无忌","张强","张三分","张无忌","周若知","王二麻子","谢广坤");

    ArrayList<String> list1=new ArrayList<>();
    Collections.addAll(list1,"周若值","snjc");
    System.out.println("------filter-------");//筛选
  list.stream().filter(s->s.startsWith("张")).forEach(s->System.out.println(s));
    System.out.println("------limit-------");//获取前几个元素
  list.stream().filter(s->s.startsWith("张")).limit(2).forEach(s->System.out.println(s));
    System.out.println("------skip-------");//跳过前几个元素
   list.stream().skip(2).forEach(s->System.out.println(s));
    System.out.println("------distinct-------");//去重
    list.stream().distinct().forEach(s->System.out.println(s));
    System.out.println("-----concat---------");//流的合并
    Stream.concat(list.stream(), list1.stream()).forEach(s->System.out.println(s));

    //将字符串类型转换为数字类型
    System.out.println("------map-------");

ArrayList<String> list2=new ArrayList<>();
    Collections.addAll(list2,"张无忌-23","张三锋-24");
    list2.stream().map(s->Integer.parseInt(s.split("-")[1])).forEach(s->System.out.println(s));
    //Integer.parseInt()强转成int

    split:切割上面就表示:按照“-”来进行切割那就会切成两部分:张无忌和23,索引分别为0,1

  Stream的终结流方法
  count
  forEach
  toArray
  collect

  输出打印
    System.out.println("-------forEach-------");
    list.stream().forEach(s-> System.out.println(s));
   计算集合Stream中的元素个数
  long count = list.stream().skip(2).count();
    System.out.println(count);
    System.out.println("------toArray-------");

  toArray:将流中的数据收集起来,放到一个数组当中

 Object[] arr = list.stream().toArray();
    System.out.println(Arrays.toString(arr));

    toArray方法参数的作用:负责创建一个指定类型的数组
    toArray底层:会依次得到流里面的每一个数据,并把数据放到数组中
    toArray方法的返回值:是一个装着流里面所有数据的数组

    String[] arr1 = list.stream().toArray(s -> new String[s]);
    System.out.println(Arrays.toString(arr1));
    System.out.println("----------tolist--------")
ArrayList<String> list3=new ArrayList<>();
    Collections.addAll(list3,"张无忌-男-15","周若芝-女-17","柯镇恶-男-52","张三-男-23","小龙女-女-26","集美-女-27","谢广坤-男-56");
 //对Stream流中的数据进行收集
List<String> newlist = list3.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toList());
    System.out.println(newlist);

    System.out.println("-----------toset--------")

  Set<String> newSet = list3.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toSet());
    System.out.println(newSet);

    //注意:tolist和toSet的区别:tolist是可以重复的,toSet是会去重的

    System.out.println("-----------toMap--------");
list3.stream().filter(s->"男".equals(s.split("-")[1])).collect(Collectors.toMap(
            s->s.split("-")[0],
           s->Integer.parseInt(s.split("-")[2])
    ));

结尾: 

       这只是 Stream 世界的冰山一角,还有更多高级特性与应用场景等待你去发掘。愿你在后续的 Java 学习与开发中,继续探索,让 Stream 成为你编程路上的得力助手,创造出更多精彩绝伦的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值