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

Java基础 -- List集合

在这里插入图片描述

Java基础 -- List集合

    • 1. Introduction
      • 1.1 好处
      • 1.2 常用泛型
    • 2. 交集,差集等
      • 2.1 自身的方法
      • 2.2 1.8jdk stream 新特性
      • 2.3 Apache的CollectionUtils工具类(推荐)
    • 3. 限定泛型范围
    • 4. Awakening


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


1. Introduction

1.1 好处

  • 代码复用,多种数据类型执行相同的代码
  • 在编译期间可以检查类型是否安全,报警ClassCastException,类型转无法转换,同时所有强制性类型转换都是自动和隐式进行的,提高了代码的安全性和重用性
  • 提高代码的可读性

1.2 常用泛型

2. 交集,差集等

2.1 自身的方法

    @Testvoid demo02() {String[] arrayA = new String[] { "1", "2", "3", "4"};String[] arrayB = new String[] { "3", "4", "5", "6" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//1、交集List<String>  jiaoList = new ArrayList<>(listA);jiaoList.retainAll(listB);System.out.println(jiaoList);//输出:[3, 4]//2、差集List<String>  chaList = new ArrayList<>(listA);chaList.removeAll(listB);System.out.println(chaList);//输出:[1, 2]//3、并集 (先做差集再做添加所有)List<String>  bingList = new ArrayList<>(listA);bingList.removeAll(listB); // bingList为 [1, 2]bingList.addAll(listB);  //添加[3,4,5,6]System.out.println(bingList);//输出:[1, 2, 3, 4, 5, 6]}

2.2 1.8jdk stream 新特性

    @Testvoid demo02() {String[] arrayA = new String[]{"1", "2", "3", "4"};String[] arrayB = new String[]{"3", "4", "5", "6"};List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);// 交集List<String> intersection = listA.stream().filter(item -> listB.contains(item)).collect(toList());System.out.println(intersection);//输出:[3, 4]// 差集 (list1 - list2)List<String> reduceList = listA.stream().filter(item -> !listB.contains(item)).collect(toList());System.out.println(reduceList);//输出:[1, 2]// 并集 (新建集合:1、是因为不影响原始集合。2、Arrays.asList不能add和remove操作。List<String> listAll = listA.parallelStream().collect(toList());List<String> listAll2 = listB.parallelStream().collect(toList());listAll.addAll(listAll2);System.out.println(listAll);//输出:[1, 2, 3, 4, 3, 4, 5, 6]// 去重并集List<String> list = new ArrayList<>(listA);list.addAll(listB);List<String> listAllDistinct = list.stream().distinct().collect(toList());System.out.println(listAllDistinct);//输出:[1, 2, 3, 4, 5, 6]}

2.3 Apache的CollectionUtils工具类(推荐)

        <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.1</version></dependency>
    @Testvoid demo02() {String[] arrayA = new String[] { "1", "2", "3", "4"};String[] arrayB = new String[] { "3", "4", "5", "6" };List<String> listA = Arrays.asList(arrayA);List<String> listB = Arrays.asList(arrayB);//1、并集 unionSystem.out.println(CollectionUtils.union(listA, listB));//输出: [1, 2, 3, 4, 5, 6]//2、交集 intersectionSystem.out.println(CollectionUtils.intersection(listA, listB));//输出:[3, 4]//3、交集的补集(析取)disjunctionSystem.out.println(CollectionUtils.disjunction(listA, listB));//输出:[1, 2, 5, 6]//4、差集(扣除)System.out.println(CollectionUtils.subtract(listA, listB));//输出:[1, 2]}

3. 限定泛型范围

  • <? extends Parent> 指定了泛型类型的上限
  • <? super Child> 指定了泛型类型的下届
  • <?> 指定了没有限制的泛型类型

4. Awakening

         在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。
在这里插入图片描述

http://www.lryc.cn/news/12231.html

相关文章:

  • 【Linux】网络编程 - Socket套接字/基于UDP的网络通信
  • 流程引擎之Camunda简介
  • Mybatis笔记整理
  • 【react全家桶】面向组件编程
  • Django框架之模型视图-使用 PostMan 对请求进行测试
  • (考研湖科大教书匠计算机网络)第五章传输层-第四节:TCP流量控制
  • 使用Docker-Compose搭建Redis集群
  • 华为OD机试 -计算网络信号(Js)
  • 【数据结构】————栈
  • 从零编写linux0.11 - 第十一章 可执行文件
  • Win10上通过nginx代理配置远程非445端口SMB
  • Allegro如何快速清除多余的规则设置操作指导
  • ROS2 入门应用 引用自定义消息(Python)
  • SmS-Activate一款好用的短信验证码接收工具
  • SpringBoot+Elasticsearch按日期实现动态创建索引(分表)
  • Terraform基础入门 (Infrastructure as Code)
  • Redis内存回收
  • ROS2 入门应用 引用自定义消息(C++)
  • Spring中的数据校验
  • python批量翻译excel表格中的英文
  • 基于SSM框架的RBAC权限系统设计与 实现
  • 目标检测各常见评价指标详解
  • 深入讲解Kubernetes架构-控制器
  • Urho3D本地化 国际化
  • 千锋教育嵌入式物联网教程之系统编程篇学习-04
  • 【运维】什么是 DevOps?
  • 【C++入门】引用、内联函数、auto关键字、基于范围的for循环(C++11)、指针空值nullptr(C++11)
  • 《FPGA学习》->多个按键控制LED灯
  • vb.net计算之.net core基础(4)-项目与程序结构(2)
  • 基于RK3588的嵌入式linux系统开发(五)——uboot优化修改(按任意按键停止autoboot)