Java基础 -- List集合

news2024/9/24 23:33:37
在这里插入图片描述

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 自身的方法

    @Test
    void 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 新特性

    @Test
    void 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>
    @Test
    void 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、并集 union
        System.out.println(CollectionUtils.union(listA, listB));
        //输出: [1, 2, 3, 4, 5, 6]

        //2、交集 intersection
        System.out.println(CollectionUtils.intersection(listA, listB));
        //输出:[3, 4]

        //3、交集的补集(析取)disjunction
        System.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.coloradmin.cn/o/354967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式任务处理:XXL-JOB分布式任务调度框架

文章目录1.业务场景与任务调度2.任务调度的基本实现2.1 多线程方式实现2.2 Timer方式实现2.3 ScheduledExecutor方式实现2.4 第三方Quartz方式实现3.分布式任务调度4.XXL-JOB介绍5.搭建XXL-JOB —— 调度中心5.1 下载与查看XXL-JOB5.2 创建数据库表5.3 修改默认的配置信息5.4 启…

斐波那契数列(递归+迭代)

目录什么是斐波那契数列递归写法使用递归写法的缺点迭代写法(效率高)什么是斐波那契数列 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例…

Redis:数据结构

简单动态字符串SDS Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组&#xff0c;以下简称C字符串)&#xff0c;而是自己构 建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型&#xff0c;并将SDS用作Redis的默认字符 串表示。 SDS 的实现…

aws lambda rust的sdk和自定义运行时

rust的aws sdk 参考资料 https://docs.aws.amazon.com/sdk-for-rust/latest/dg/getting-started.htmlhttps://awslabs.github.io/aws-sdk-rust/https://github.com/awslabs/aws-sdk-rusthttps://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rust_dev_preview rus sd…

XlsReadWriteII EXCEL Cell Font 单元字体设置

XlsReadWriteII EXCEL Cell Font 单元字体设置 通过XLSReadWriteII5在写EXCEL时&#xff0c;由于XLSReadWriteII5中使用的是个性化的TFont&#xff0c;因而通过参数带入TFont&#xff0c;不能完整地将TFont带入Cell的Font&#xff0c;问题解决如下&#xff1a; 一、问题说明 1、…

Python学习-----模块2.0(常用模块之时间模块-->time)

目录 前言&#xff1a; time简介 导入模块 1.时间戳 2.时间元组 &#xff08;1&#xff09;把时间戳转换为元组形式 &#xff08;2&#xff09;元组转换为时间戳输出 &#xff08;3&#xff09;把元组转换为格式化时间 &#xff08;4&#xff09;把时间戳转换为格式化时间…

【深度学习】模型评估

上一章——多分类问题和多标签分类问题 文章目录算法诊断模型评估交叉验证测试算法诊断 如果你为问题拟合了一个假设函数&#xff0c;我们应当如何判断假设函数是否适当拟合了&#xff1f;我们可以通过观察代价函数的图像&#xff0c;当代价函数达到最低点的时候&#xff0c;此…

手机/移动端的UI框架-Vant和NutUI

下面推荐2款手机/移动端的UI框架。 其实还有很多的框架&#xff0c;各个大厂都有UI框架。目前&#xff0c;找来找去&#xff0c;只有腾讯的移动端是setup语法写的TDesign&#xff0c;其他大厂&#xff0c;虽然都是VUE3写的&#xff0c;但是都还未改成setup的语法&#xff0c;而…

张晨光-JAVA零基础保姆式JDBC技术教程

JDBC文档 JDBC概述 JDBC概述 Java DataBase Connectivity Java 数据库连接技术 JDBC的作用 通过Java语言操作数据库&#xff0c;操作表中的数据 SUN公司为**了简化、**统一对数据库的操作&#xff0c;定义了一套Java操作数据库的规范&#xff0c;称之为JDBC JDBC的本质 是官方…

【JavaSE专栏10】Java的顺序结构、选择结构和循环结构

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

金融错配程度/信贷错配程度/资本错配程度/资本资源错配程度(1998-2021年)

数据来源&#xff1a;根据沪深A股上市公司数据进行测算 时间跨度&#xff1a;1998-2021年 区域范围&#xff1a;沪深A股上市公司 指标说明&#xff1a; 参考邵挺(2010)、周煜皓和张胜勇(2014)的研究&#xff0c;运用金融错配负担水平来衡量信贷错配&#xff08;Fd&#xff…

Redis-哨兵模式以及集群

在开始这部分内容之前需要先说一下复制功能&#xff0c;因为这是Redis实现主从数据同步的实现方式。复制功能如果存在两台服务器的话&#xff0c;我们可以使用redis的复制功能&#xff0c;让一台服务器去同步另一台服务器的数据。现在我启动了两台redis服务器&#xff0c;一个端…

【大数据】HADOOP-Yarn集群界面UI指标项详解(建议收藏哦)

目录首页&#xff08;Cluster&#xff09;节点信息Scheduler Metrics&#xff1a;集群调度信息节点信息详解&#xff08;Nodes&#xff09;应用列表信息&#xff08;applications&#xff09;队列详情页&#xff08;Scheduler&#xff09;指标详细说明&#xff08;非常重要&…

斯坦福:chatGPT可能有了人类心智,相当于9岁儿童!

chatGPT已经具备了人类独心智&#xff0c;这话不是我说的&#xff0c;是一位来自斯坦福大学计算机科学家说的。很多玩过chatGPT的人都见识过他的”无所不知”&#xff0c;但是&#xff0c;我觉得最让我吃惊的是&#xff0c;他比以前我们用过那些对话机器人最大的差别就是你甚至…

「数据科学」数据科学家为什么应该学习PostgreSQL?

SQL是成为数据科学家的必要条件吗?答案是肯定的。数据科学已经发展了&#xff0c;虽然许多数据科学家仍然使用CSV文件(值以逗号分隔的文本文件)&#xff0c;但它们不是最好的选择。Python Panda库允许从CSV文件加载数据&#xff0c;但是这些文件有许多约束。例如&#xff0c;它…

各种常用C/C++集成开发环境的安装与配置

新学期又开始了&#xff0c;帮助又一堆菜鸟安装和配置C/C集成开发环境是一件恼人的工作。 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载&#xff0c;但需要注明原作者"海洋饼干叔 叔"&#xff1b;本文不允许以纸质及电子出版为目的…

【k8s】如何搭建搭建k8s服务器集群(Kubernetes)

搭建k8s服务器集群 服务器搭建环境随手记 文章目录搭建k8s服务器集群前言&#xff1a;一、前期准备&#xff08;所有节点&#xff09;1.1所有节点&#xff0c;关闭防火墙规则&#xff0c;关闭selinux&#xff0c;关闭swap交换&#xff0c;打通所有服务器网络&#xff0c;进行p…

Bash Shell 通过ls命令筛选文件

Bash Shell 通过ls命令及其管道根据大小名称筛选文件 最近参与的项目当中有需要用pyarmor加密项目的要求&#xff0c;听网上吹的pyarmor都那么神&#xff0c;用了一下感觉也一般&#xff0c;试用版普通模式下文件加密居然还有大小32KB的限制&#xff0c;加密到一半就失败了&am…

Linux常用命令汇总

1、tcpdump抓包 tcpdump这个命令是用来抓包的&#xff0c;默认情况下这个命令是没有的&#xff0c;需要安装一下&#xff1a; yum install -y tcpdump 使用这个命令的时候最好是加上你网卡的名称&#xff0c;不然可能使用不了&#xff1a; tcpdump -nn -i {网卡名称} 网卡名称…

iOS开发笔记之九十六——本地Data Persistence总结笔记

本质上来说&#xff0c;不管是哪种缓存方式最终都会以文件的形式存储在磁盘上&#xff0c;只不过上层进行了某种“封装”或“抽象”&#xff0c;所以还是做了分类&#xff0c;目前iOS本地持久化缓存&#xff08;Storage/Persistence&#xff09;有以下几种形式&#xff1a;User…