java_集合

news2024/11/16 5:43:26

1.集合

集合分为单列集合(collection)和双列集合(map).
在这里插入图片描述

单列就是每个位置只有一个值,双列则是每个位置都是一对键值对,类似于python的字典。
在这里插入图片描述

2.collection

其中,collection又可以分为List和Set两种。
在这里插入图片描述

ArrayList的底层数据结构是数组,但不同于数组,arraylist的长度是可变的。同时由于实现的底层数据结构是数组,arraylist因此也具有数组的一些缺点:在进行增删操作时需要大批量的移动元素,非常不方便。

同时与链表数据结构的Linkedlist相比,ArrayList可以通过索引访问元素,在遍历和查找时很方便。

在这里插入图片描述

LinkedList顾名思义就是通过链表这种底层数据结构实现的集合,因此具备链表的一些特性:查询慢,但增删快。
LinkedList是基于双链表实现的,可以往后遍历,也可以往前。
LinkedList有一些定义好的方法:addFirst/addLast , getFirst/getLast , removeFirst/removeLast.
在这里插入图片描述
在这里插入图片描述

如上两图,由于队列和栈都是重点操作首尾元素,所以LinkedList可以用来设计这两种场景。

set元素不重复,无索引,无序。
HashSet不保证插入去除顺序:

import java.util.HashSet;
import java.util.Set;

public class Main {
  public static void main(String[] args) {

    Set<String> s1 = new HashSet<>();

    // Add a few elements
    s1.add("HTML");
    s1.add("CSS");
    s1.add("XML");
    s1.add("XML"); // Duplicate

    // Create another set by copying s1
    Set<String> s2 = new HashSet<>(s1);
    // Add a few more elements 
    s2.add("Java"); 
    s2.add("SQL");
    s2.add(null); // one null is fine
    s2.add(null); // Duplicate

    System.out.println("s1: " + s1);
    System.out.println("s1.size(): " + s1.size());

    System.out.println("s2: " + s2);
    System.out.println("s2.size(): " + s2.size());
  }
}

在这里插入图片描述

但LinkedSet在插入时保证元素的顺序。

import java.util.LinkedHashSet;
import java.util.Set;

public class Main {
  public static void main(String[] args) {

    Set<String> s1 = new LinkedHashSet<>();
    s1.add("A");
    s1.add("B");
    s1.add("C");
    s1.add("D");
    System.out.println("LinkedHashSet: " + s1);


  }
}

在这里插入图片描述

3.map

HashMap

最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

TreeMap

能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。
Hashtable

与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
LinkedHashMap

保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

//注意这边申明类型不能用int
Map<String, String> map = new HashMap<String, String>();
Map<Integer, String> map2 = new HashMap<Integer, String>();

插入元素
map.put("key1", "value1");

获取元素
map.get("key1")

移除元素
map.remove("key1");

清空map
map.clear();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/410680.html

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

相关文章

全国大学生智能汽车竞赛——安装Ubuntu操作系统(双系统)

1.1 电脑分区 1.1.1 分区原因 由于我们想要在电脑上同时安装Windows和Ubuntu系统&#xff0c;所以就要在window使用的内存中划分出来一段用来给Ubuntu系统使用&#xff0c;相当于一个应用程序一样 1.1.2 分区步骤 1.右击此电脑&#xff0c;点击管理&#xff0c;然后双击左侧…

【刷题笔记】--dp--376. 摆动序列122. 买卖股票的最佳时机 II

感觉自己dp还不是很会&#xff08;/(ㄒoㄒ)/~~ 写dp题的步骤&#xff1a;①通过定义子问题&#xff0c;确定dp[ ] or dp[ ][ ] 表示的含义 ②写出子问题的递归关系 ③确定初始条件 题目&#xff1a; 思路&#xff1a; ①确定dp的含义&#xff1a;dp[i]表示 到i位置&#x…

网络信息安全(三层设备部署DHCP服务器与DHCP中继、ICMP协议)

文章目录三层路由器部署DHCP服务器配置trunkVLAN创建将端口加入对应vlan路由创建子接口路由器创建地址池服务器配置静态IPDHCP服务器部署创建作用域在三层设备配置DHCP中继DHCP中继原理ICMP协议概述用途封装格式三层路由器部署DHCP服务器 配置trunk VLAN创建 这里以S1为例&…

Vulnhub:Digitalworld.local (Development)靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.130 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 查看网站首页源码 访问development目录&#xff0c;提示存在一个流量包 查看流量包发现另一个网站路径&#xff1a;/devel…

多模态之论文笔记ViLT

文章目录ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision一. 简介1.1 摘要1.2 文本编码器&#xff0c;图像编码器&#xff0c;特征交互复杂度分析1.2 特征交互方式分析1.3 图像特征提取分析二. 方法 Vision-and-Language Transformer2.1. 方…

【高危】Apache Linkis JDBC EngineConn 插件<1.3.2 存在反序列化漏洞

漏洞描述 Apache Linkis 是一个用于将上层应用与底层数据引擎解耦&#xff0c;提供标准化接口的中间件。 该项目受影响版本存在反序列化漏洞&#xff0c;由于ConnectionManager.java中未对dbUrl、username、password等参数进行充分过滤&#xff0c;当恶意用户完全控制应用程序…

缘起|蚂蚁应用级服务发现的实践之路

文&#xff5c;肖健&#xff08;花名&#xff1a;昱恒&#xff09;蚂蚁集团技术专家、SOFARegistry Maintainer专注于服务发现领域&#xff0c;目前主要从事蚂蚁注册中心 SOFARegistry 的设计和研发工作。本文 8339 字 阅读 15 分钟PART. 1前言什么是服务发现&#xff1f;我们今…

Python人工智能在气象中的实践技术应用

专题一 Python 和科学计算基础 1.1 Python 入门和安装 1.1.1 Python 背景及其在气象中的应用 1.1.2 Anaconda 解释和安装以及 Jupyter 配置1.1.3 Python 基础语法 1.2 科学数据处理基础库 1.2.1 Numpy 库1.2.2 Pandas 库1.2.3 Scipy 库 1.2.4 Matplotlib 和 Cartopy 库 …

thinkphp6多应用模块配置使用

1.安装thinkphp6 6.0之前安装都是从Git或者直接下载安装包进行安装&#xff0c;从6.0开始安装方式就改成了composer进行安装了&#xff0c;安装命令如下&#xff1a; 稳定版&#xff1a;composer create-project topthink/think tp 开发版&#xff1a;composer create-projec…

SOLIDWORKS官方认证考试

SOLIDWORKS官方认证考试&#xff1a; CSWA认证 CSWP认证 CSWPA认证 CSWE认证 SOLIDWORKS认证考试是达索SOLIDWORKS公司推出的全球性认证考试项目&#xff0c;是作为衡量您所具备的SOLIDWORKS应用专长与能力的一种测试和认可&#xff0c;主要考察对设计、仿真一体化、机电一体…

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

文章目录大数据时代HadoopHadoop概述Hadoop特性优点Hadoop国内外应用Hadoop发行版本Hadoop集群整体概述HDFS分布式文件系统传统常见的文件系统数据和元数据HDFS核心属性HDFS简介HDFS shell操作Map Reduce分而治之理解MapReduce思想分布式计算概念MapReduce介绍MapReduce产生背景…

低代码,是稳打稳扎还是饮鸩止渴?

2023年&#xff0c;业内对低代码的发展充满了想象。 人们认为&#xff0c;未来低代码它的商业价值不可估量。 据Gartner的最新报告显示&#xff0c;到2023年&#xff0c;全球低代码开发技术市场规模预计将达到269亿美元&#xff0c;比2022年增长19.6%。 随着数字化进入深水区&a…

数据仓库、数据集市、数据湖,你的企业更适合哪种数据管理架构?

建设企业级数据平台&#xff0c;首先需要了解企业数据&#xff0c;确认管理需求&#xff0c;并选择一个数据管理架构。那么面对纷繁复杂的数据来源&#xff0c;多元化的数据结构&#xff0c;以及他们的管理使用需求&#xff0c;企业数据平台建设该从何处入手呢&#xff1f;哪个…

Zabbit

目录 一、zabbix概述 zabbix是什么 主要特点 运行机制 zabbix监控原理 zabix常见的五个程序 zabbix端口号 架构 二、安装 zabbix 5.0 1、部署zabbix服务端&#xff08;端口号10051&#xff09; 1、关闭防火墙、修改主机名 2、下载zabbix源 3、 更换为阿里源 4、安…

chapter-2数据库基本知识

以下课程来源于MOOC学习—原课程请见&#xff1a;数据库原理与应用 考研复习 前言&#xff1a; 抽象与模型 1.对数据不同抽象层次中的对象采用不同的模型进行描述 人的姓名、性别—>概念模型---->DBMS支持的数据模型---->物理模型 2.概念模型&#xff1a;按用户观…

PHP通过函数来了解字符串格式化的案例和代码

目录 前言 一、字符串空格的删除 1.tri()函数 2.ltrim()函数 3.rtrim()函数 二、字符串大小写转换 1.strtolower()函数 2.strtoupper()函数 三、格式化数字 前言 1.以下介绍PHP的相关知识&#xff1b; 2.本弹窗界面可以根据简单的要求实现一使用功能。同时可以实现自定义…

Kubernetes 部署 StarRocks 集群

文章目录StarRocks简介系统架构图安装部署StarRocks手动部署通过 Docker部署使用 StarGo 部署管理通过 StarRocks Manager部署管理通过 Kubernetes部署工作原理逻辑图部署 StarRocks Operator部署 StarRocks 集群访问 StarRocks 集群集群内访问 StarRocks 集群集群外访问 StarR…

了解高可用

图片来自网络 高可用定义 “高可用性”&#xff08;High Availability&#xff09;通常来描述一个系统经过专门的设计&#xff0c;从而减少停工时间&#xff0c;而保持其服务的高度可用性。 设计系统的可用性&#xff0c;最重要的是满足用户的需求。系统的失败只有当其导致服务…

不完美解决谷歌Chrome在设置background cover和fixed属性后,滚动屏幕出现背景图片的拉伸

业务场景: 让元素有背景图. 背景图不随着页面滚动而移动,相对于浏览器窗口固定. 根据屏幕尺寸,背景图自动覆盖式填充,不能有接缝和重复. 元素要有圆角. 通过js入参动态设置背景图. 不便截图,相信各位上面可以看明白了. 复现: css是这样的 .main {width: 90%;background-…

Chat GPT5的主要介绍

Chat GPT-5是一种基于人工智能技术的对话系统&#xff0c;用于进行自然语言处理和对话&#xff0c;以提供更好的服务。 它是由OpenAI公司开发的&#xff0c;是GPT系列的最新版本。 GPT代表着"生成式预训练"&#xff0c;因此Chat GPT-5基于神经网络&#xff0c;通过预…