Java(五)-Java集合(comparable,map,list

2023-11-19

集合

Collection集合

集合的概念

ArrayList就是一个集合,集合是Java提供的一种容器,可以用来存储多个数据

集合与数组的区别

1.数组的长度是固定的,集合的长度是可变的
2.数组中存储的是同一类型的元素,可以存储基本数据类型。集合中存储的是对象,且对象的类型可以不一致,在开发中,一般当对象多的时候,使用集合进行存储。

集合框架的介绍

在这里插入图片描述

集合的常用功能

在这里插入图片描述

Collection<String> collection = new HashSet<>(); //多态
Collection<String> collection = new ArrayList<>(); 
collection.add("liu");//哪种实现类都可以用

iterator接口的介绍

在这里插入图片描述
【注意】iterator是个接口,在collection中的iterator() 方法会返回iterator的实现类,iterator是Collection接口的方法,是所有集合所共有的方法。

迭代器iterator的代码实现

在这里插入图片描述

//多态 接口             实现类对象
//用接口去接收实现类对象
Iterator<String> it = coll.iterator();

迭代器的实现原理

在这里插入图片描述

增强for循环

在这里插入图片描述
【注意】collection接口继承了iterable接口,实现这个接口(iterable)允许对象成为 “foreach” 语句的目标,数组也可以用增强for循环。

泛型

泛型的概念

在这里插入图片描述
使用泛型的好处
在这里插入图片描述
在这里插入图片描述

定义和使用泛型的类

在这里插入图片描述
在这里插入图片描述
【注意】E只是一个符号,当然也可以取其他的符号,<>中只能是引用类型,不支持基本数据类型。

含有泛型的方法

在这里插入图片描述

含有泛型的接口

含有泛型的接口有两种使用方式
在这里插入图片描述
在这里插入图片描述

泛型通配符

泛型的通配符:
?:代表任意的数据类型
使用方法:
不能创建对象使用

ArrayList<?> list = new ArrayList<?>(); //报错的

只能作为方法的参数使用
在这里插入图片描述
泛型的上限限定:<? extends E>代表使用的泛型只能是E类型的子类/本身
泛型的下限限定:<? super E>代表使用的泛型只能说E类型的父类/本身
在这里插入图片描述

数据结构

栈:先进后出
队列:先进先出
数组:查询快,增删慢。【注意】个人觉得数组的增删有问题
在这里插入图片描述
链表:【注意】表中单链表和双链表的理解有问题
在这里插入图片描述
树:
树/二叉树/排序树(查找树)/平衡树/红黑树
在这里插入图片描述

List集合

List这个接口就是有序的
介绍
在这里插入图片描述
arraylist:List接口的大小可变数组的实现。底层当add,会调用System.arraycopy新建数组。线程不安全(此实现不同步)
linkedlist线程不安全(此实现不同步)
在这里插入图片描述
【注意】:pop和push都是对第一个链表元素进行操作
Vector可增长的对象数组。是同步的(线程安全的)。

Set

hashset
在这里插入图片描述
哈希值
在这里插入图片描述
【注意】p1==p2说明比较的是真实地址

System.out.println("重地".hashCode());  //1179395
System.out.println("通话".hashCode()); //1179395
System.out.println("重地"=="通话"); // false
System.out.println("重地".equals("通话")); // false

哈希表
在这里插入图片描述
set集合不允许重复的原理
在这里插入图片描述
hashset存储自定义类型元素
在这里插入图片描述
【注意】==比较的是地址。equals比较的也是地址,若重写的话,可不同。

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

linkedhashset的有序性
在这里插入图片描述
可变参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Collections

Collections工具类的方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
comparable接口和comparator接口的不同见上图。

map集合

在这里插入图片描述
map常用子类
在这里插入图片描述
map常用方法
在这里插入图片描述
【注意】

int v1 = map.remove(key);//自动拆箱 NullPointerException
Integet v2 = map.remove(key);//没问题

map集合遍历
在这里插入图片描述
在这里插入图片描述
【注意】hashmap的键和值都可以为null。

entry键值对对象
在这里插入图片描述

    HashMap<String, String> map = new HashMap<>();
    String put = map.put("liu", "1");
    String put1 = map.put("chun", "2");
    String put2 = map.put("lei", "3");
    Set<Map.Entry<String, String>> entries = map.entrySet();
    Iterator<Map.Entry<String, String>> iterator = entries.iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, String> next = iterator.next();
        System.out.println(next.getKey() + " "+next.getValue());
    }
    System.out.println(map);
    for (Map.Entry<String, String> entry : entries) {
        
    }

hashmap存自定义类型
在这里插入图片描述
linkedhashmap
在这里插入图片描述
hashtable
在这里插入图片描述
【注意】key和value都不能为null;线程安全。
jdk9的新特性:对添加元素的优化
在这里插入图片描述
debug的使用
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java(五)-Java集合(comparable,map,list 的相关文章

  • 方法返回类型前的 是什么意思?

    下面的方法返回一个List组成T类型元素 public
  • 同一服务器上的许多应用程序具有相同的 JMX Mbean 类

    我有超过 5 个 Spring Web 应用程序 它们都在使用另一个通用库 这个公共库有它自己的 MBean 由于强制的唯一 objectName 约束 我的应用程序无法部署在同一服务器上 我使用 MBean 的方式是这样的 Managed
  • 在Windows Server 2003下如何在本地系统帐户下运行jvisualvm.exe?

    我在带有 Java 1 6 u 20 的 Windows Server 2003 下将 GlassFish 3 0 1 作为 Windows 服务运行 总体上我很满意 我希望能够在这个 JVM 上使用 VisualVM 并使用无法在 Tom
  • java程序有多少种结束方式?

    我知道使用 System exit 0 可以结束一个java程序 例如 如果我有一个JFrame窗口 它会关闭并结束程序 但我想知道还有多少其他方法 可以关闭它并结束程序 包括发生错误时 程序会被关闭 JFrame也会被关闭吗 添加到其他答
  • Java 中的 <-- 是什么? [复制]

    这个问题在这里已经有答案了 我遇到了下面的片段 它输出到4 3 2 1 我从来没有遇到过 lt 在爪哇 Is lt 使 var1 的值变为 var2 的运算符 public class Test public static void mai
  • 使用 Exec Maven 插件分叉 Java,而不使用“exec”目标

    来自文档 https www mojohaus org exec maven plugin exec exec在单独的进程中执行程序和Java程序 exec java在同一虚拟机中执行 Java 程序 我想 fork 一个 java 程序
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • 什么是内部类的合成反向引用

    我正在寻找应用程序中的内存泄漏 我正在使用的探查器告诉我寻找这些类型的引用 但我不知道我在寻找什么 有人可以解释一下吗 Thanks Elliott 您可以对 OUTER 类进行合成反向引用 但不能对内部类实例进行合成 e g class
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 自定义列表字段点击事件

    我正在编写一个应用程序 其中我创建了用于显示列表视图的自定义列表字段 我的 CustomListField 包含连续的一个图像和文本 我正在通过单击列表字段行获取字段更改侦听器 但我也想将字段更改侦听器放在图像上 谁能告诉我我该怎么做 这是
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • 如何使用 Java Apache POI 隐藏 Excel 工作表中以下未使用的行?

    我正在使用数据库中的数据填充模板 Excel 工作表 for Map
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • 带 getClassLoader 和不带 getClassLoader 的 getResourceAsStream 有什么区别?

    我想知道以下两者之间的区别 MyClass class getClassLoader getResourceAsStream path to my properties and MyClass class getResourceAsStre
  • 如何让 Firebase 与 Java 后端配合使用

    首先 如果这个问题过于抽象或不适合本网站 我想表示歉意 我真的不知道还能去哪里问 目前我已经在 iOS 和 Android 上开发了应用程序 他们将所有状态保存在 Firebase 中 因此所有内容都会立即保存到 Firebase 实时数据
  • Spring 作为 JNDI 提供者?

    我想使用 Spring 作为 JNDI 提供程序 这意味着我想在 Spring 上下文中配置一个 bean 可以通过 JNDI 访问该 bean 这看起来像这样

随机推荐

  • ES按日期滚动索引

    按日期滚动索引 环境 ES 6 9 ES 7 Centos 7 配置过程 创建索引 PUT localhost 9200 index 20210915 设置索引别名 写入别名和读取别名 PUT localhost 9200 index 20
  • 网络 -- n/24 计算IP范围

    1 IP地址 共分为四类 A B C D类 A类 从1 0 0 0 到 126 255 255 255 B类 从128 0 0 0 到 191 255 255 255 C类 从192 0 0 0 到 223 255 255 255 其中12
  • 关于输入、输出电容在 LDO 应用中的重要性

    关于输入 输出电容在 LDO 应用中的重要性 如何让LDO 产品在应用中达到更佳的稳定性 则用户在设计电路时 最好根据芯片 datasheet 的说明文档而定 下面以LP2985 3 3这个LDO为例 LP2985 3 3是低功耗 低压差
  • Vue基础(二)——模板语法

    一 指令 1 v bind 绑定属性 2 v on 绑定事件 3 v if和v show 1 介绍
  • tcp/ip在物理层/数据链路层 实现简单抓包

    socket的精妙之处在于协议族的横向转换和地址族的纵向转换 我们也可在更底层实现对流经host的数据流的监督和修改 尤其是监察数据 十分简单 这里是混杂模式实现对ip数据流的监察与对tcp数据流的简单查看 需要root权限 这里忽略了tc
  • 整理一下go的ci工具

    代码格式化 go fmt fileName go goimports 自动格式化import goimports w fileName go mod 自动更新 删除包 go mod tidy 检查注释是否符合导出 1 安装revive go
  • 关于如何修复烧写镜像文件失败的SD卡

    前言 使用某些软件 比如 win32 Disk Imager 向SD卡烧写镜像文件时 很有可能出现烧写失败的情况 通常如果烧写失败 系统会弹出请求格式化SD卡的提示框 此时不要点格式化 点了可能会造成不可挽救的结果 也可能不会 而是进行以下
  • 【C库函数】memcpy函数详解

    目录 memcpy 函数原型 参数讲解 返回值讲解 函数讲解 三个注意点 memcpy 拷贝内存块到目标空间 函数原型 void memcpy void dest const void src size t count 参数讲解 参数 de
  • 百度AI──自然语言处理使用教程

    百度AI 自然语言处理使用教程 情感倾向分析 创建自己的应用 python方式调用 安装Python SDK 创建一个 Python SDK客户端 配置AipNlp 调用接口 情感倾向分析 需要注意的几个点 完整代码 参考 创建自己的应用
  • Linux 配置 PaddleOCR环境

    配置环境 1 准备好CUDA和cudnn 安培架构GPU需配置CUDA 11 2 CUDNN 8 1 1 以下文档以安培架构GPU的为例 找到对应的版本下载CUDA https developer nvidia com cuda downl
  • 一位数组返回id和pid通过这两个参数转换为树形结构数据,和树形结构的渲染

    废话不多说直接上代码 html代码我是引用了一个jq的插件作为样式插件名字为 jOrgChart 具体内容大家可以评论到下方 div class com div class TheEditor 编辑 div div div div js代码
  • Java 实体设置指定日期格式

    import com fasterxml jackson annotation JsonFormat JsonFormat pattern yyyy MM dd HH mm ss timezone GMT 8 private Date cr
  • nginx 代理图片服务器

    location gif jpg jpeg png expires 24h root home sk ftp 指定图片存放路径 proxy store on proxy store access user rw group rw all r
  • MATLAB BP神经网络 笔记整理

    1 如何更改输出层的激活函数 传递函数 对于有两层神经网络结构 可以通过调用以下函数 net layers 1 or 2 transferFcn for the hidden net layers 3 transferFcn for the
  • C#实现遍历文件夹获取指定后缀名文件

    问题描述 项目需要 要进行某文件夹下所有shp数据的读取 解决方法 using System using System Collections Generic using System ComponentModel using System
  • Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析

    Python机器学习 数据挖掘项目实战 波士顿房价预测 回归分析 此数据源于美国某经济学杂志上 分析研究波士顿房价 Boston HousePrice 的数据集 在这个项目中 你将利用马萨诸塞州波士顿郊区的房屋信息数据训练和测试一个模型 并
  • Qt之一个类成员函数调用另一个类成员的方法

    原文 https blog csdn net qq 35721743 article details 83592415 在继承之外 在C 中一个类成员函数调用另一个类成员的方法主要有 类的组合 友元类 类的前向声明 单例模式等 下面主要讲讲
  • gym 101512 BAPC 2014 I Interesting Integers

    Problem codeforces com gym 101512 attachments vjudge net contest 186506 problem I Meaning 给出一个 正整数 n 要找尽量小的 a 和 b a lt b
  • 面向对象三大特性之一——多态详解

    目录 前言 一 多态的概念 二 多态的定义及实现 1 虚函数的概念 2 虚函数的重写 2 1概念 2 2虚函数重写的两个例外 3 多态的构成条件 4 c 11 override和final 4 1 final 4 2 override 5
  • Java(五)-Java集合(comparable,map,list

    集合 Collection集合 集合的概念 ArrayList就是一个集合 集合是Java提供的一种容器 可以用来存储多个数据 集合与数组的区别 1 数组的长度是固定的 集合的长度是可变的 2 数组中存储的是同一类型的元素 可以存储基本数据