当前位置: 首页 > news >正文

Stream和Collections工具类

 Stream流

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选、排序、聚合等。

    public static void main(String[] args){List<String> list =new ArrayList<>(Arrays.asList("aaaa","Saaaa","Saaaa","xx","Xss","Lxxx"));//删除长度不大于3的字符串//删除首字母不为大写的字母//去掉重复的字符串list=list.stream().filter(str ->str.length()>3) //保留的条件.filter(str ->str.charAt(0)>='A'&&str.charAt(0)<='Z').distinct()  //去重,用equals判断.collect(Collectors.toList());System.out.println(list);List<Integer>collect=list.stream().map(String::length).collect(Collectors.toList());System.out.println(collect);}
//输出[Saaaa, Lxxx]
//[5, 4]

不能认为每一步是直接依次执行的。Stream会先记录每一步操作,而不是直接开始执行内容,当整个链式调用完成后,才会依次执行,也就是说需要的时候,工厂的机器才会按照预定的流程启动。

生成随机数:

    public static void main(String[] args){Random random=new Random();random.ints(-100,100).limit(10).filter(i -> i<0) //只保留小于0的数字.sorted()  //默认从小到大排序.forEach(System.out::println);}

Collections工具类

Arrays是一个用于操作数组的工具类

Collections类是专用于集合的工具类

常用方法:

    public static void main(String[] args){List list1=new ArrayList<>(Arrays.asList(1,4,5,2,9,0));//求最大值最小值Collections.max(list1);Collections.min(list1);//对集合进行二分搜索(注意:集合的具体类型必须是实现Comparable接口的类)Collections.sort(list1);System.out.println(Collections.binarySearch(list1,4));
//输出3//对集合的元素进行快速填充,注意这个填充是对集合中的已有元素进行覆盖//如果集合中本身没有元素,那么fill操作不会生效Collections.fill(list1,0);System.out.println(list1);
//输出[0, 0, 0, 0, 0, 0]//emptyXXX快速生成一个只读的空集合List<Integer>list2=Collections.emptyList();//Collections.singletonList()会生成一个只有一个元素的Listlist2.add(10); //不支持,会直接抛出异常//将一个可修改的集合变成只读的集合:List<Integer>list3=new ArrayList<>(Arrays.asList(1,3,3,24));List<Integer>newList=Collections.unmodifiableList(list3);newList.add(10); //不支持,会抛出异常//寻找子集合的位置System.out.println(Collections.indexOfSubList(list3,Arrays.asList(3,3)));
//输出1}

由于泛型机制上的一些漏洞,实际上对应类型的集合类有可能会存放其他类型的值,泛型的检查值存在于编译阶段,我们只要绕过这个阶段,在实际运行时,并不会真的进行类型检查,要解决这些问题就是在运行时进行类型检查:

    public static void main(String[] args){List list1=new ArrayList<>(Arrays.asList(1,4,5,2,9,0));list1=Collections.checkedList(list1,Integer.class);list1.add("aaa");System.out.println(list1);}
//在输出时会报错

相关文章:

  • vue3搭建后台管理系统
  • 18个国内wordpress主题推荐
  • CSS分栏布局
  • Prometheus实战教程:k8s平台-使用文件服务发现案例
  • 依赖注入详解与案例(前端篇)
  • STM32--RCC--时钟
  • leetcode 24. 两两交换链表中的节点
  • Nacos源码—4.Nacos集群高可用分析三
  • 华为私有协议Hybrid
  • Java实用注解篇: @JSONField
  • Open CASCADE学习|判断一点与圆弧的位置关系
  • 掌握NuGet包管理工具:从基础到进阶的全面指南
  • 无人机相关技术与故障排除笔记
  • AI Agent开发第57课-AI用在销售归因分析场景中-用随机森林从0构建自己的“小模型”
  • Docker安装使用
  • 2、实验室测控系统 - /自动化与控制组件/lab-monitoring-system
  • Kotlin-解构声明
  • Kotlin重构Android项目实践
  • 【SaaS安全】数据加密与用户身份管理
  • 前端、XSS(跨站脚本攻击,Cross-Site Scripting)
  • 张家口一景区观光魔毯疑失控致游客被甩出,涉事景区改造升级重新开园才3天
  • “特朗普效应”下澳大利亚执政工党赢得大选,年轻选民担忧房价
  • 桥,在黄岩与上海之间|劳动者的书信③
  • 安徽六安特色产品将“组团”入沪,借力五五购物节开拓市场
  • 贵州赤水丹霞大瀑布附近山体塌方车辆被埋,景区:无伤亡,道路已恢复
  • 全球最大汽车板供应商宝钢股份:汽车工业加速转型中材料商如何共舞?