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

JAVA基础-集合(List与Map)

目录

引言

一,Collection集合

1.1,List接口

1.1.1,ArrayList

1.1.1.1,ArrayList的add()添加方法

 1.1.1.2,ArrayList的remove()删除方法

1.1.1.3,ArrayList的contains()判断方法

1.1.1.4,ArrayList的set()排序方法和size()大小方法

1.1.1.5,ArrayList的遍历

1.1.2,LinkedList

1.2,Set接口

1.2.1,HashSet

1.2.1.1,HashSet的add()添加方法

1.2.1.2,HashSet的remove()删除方法

 1.2.1.3,HashSet的contains()判断方法

1.2.1.4,HashSet的size()大小方法和clear()清空方法

 1.2.2,Treeset

二,Map集合

2.1,HashMap集合

2.1.1,HashMap的put()添加方法

2.1.2,HashMap的get()获取方法

2.1.3,HashMap的containkey()和containvalue判断方法

2.1.4,HashMap的remove()删除方法

2.1.5,HashMap的遍历

2.1.5.1,HashMap的keyset()遍历方法

2.1.5.2,HashMap的values()遍历方法

2.2,TreeMap集合


引言

        程序中可能通过数组来保存多个对象,因为数组长度是不可变的。JDK中提供了一些特殊的类,这些类 可以存储任何对象,并且长度可变,在java中这些类被为集合。集合类位于 java.util 包中。

        集合有两大类:

  1. 单列集合 Collection 接口
  2. 双列集合 Map 接口

一,Collection集合

        java.util.Collection 是所有单列集合的父接口,因此在Collection中定义了单列集合 List 和 Set 通用的一些方法。

方法声明功能描述
boolean add(Object o)向集合中添加一个元素
boolean addAll(Collection c)增加一个集合(多个元素)
void clear()清空集合
boolean remove(Object o)删除集合中的一个对象(元素)
boolean removeAll(Collection c)删除一个集合(多个元素)
boolean isEmpty()是不是空的
boolean contains(Object o)判断集合有没有这个元素
boolean containsAll(Collection c)判断集合中有没有参数集合
Iterator iterator()返回一个遍历迭代器
int size()返回集合的元素个数

1.1,List接口

        List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地将实现了List接口的对象称为List 集合,本质更象一个动态的数组。

        List的常用方法:

方法功能描述
void add(int index,Object element)向集合中指定位置添加一个元素
boolean addAll(int index,Collection c)向集合中指定位置增加一个集合(多个元素)
Object get(int index)获取指定位置元素
Object remove(int index)删除指定位置元素
Object set(int index,Object element)修改指定位置的元素
int indexOf(Object o)获取指定元素索引
int lastIndexOf(Object o)获取最后一个元素索引
List subList(int fromIndex,int toIndex)将指定索引对象对换

1.1.1,ArrayList

        java.util.ArrayList类是List接口的一个实现类,此对象相当于动态的数组。

        实例化ArrayList对象有几种方式:

实例演示:

        //实例化 ArrayListArrayList list1 = new ArrayList();var list2 = new ArrayList();List list3 = new ArrayList();//此方法实例出的对象,是只读的(不能添加 删除 移动位置,优点是能够快速建立集合实例对象)List list4 = List.of();//list4.add(10); 此行是错误的,因为List.of() 对象是只读的String[] arr = {"java","javascript","python","html"};//此方法实例出的对象,是只读的;list5.add(10);不可行List list5 = Arrays.asList(1,2,3);

        ArrayList的常用方法添加、删除、判断、大小输出,修改,,排序,遍历:

  • add()//添加
  • remove()//删除
  • contains()//判断
  • set()//设置指定位置元素更改为指定对象
  • size()//大小

1.1.1.1,ArrayList的add()添加方法

实例演示:

        //实例化,这们实例化,集合可以添加任何类型的元素 默认是ObjectList list = new ArrayList();//添加元素list.add(10);System.out.println(list);list.add(5.665);System.out.println(list);list.add("java");System.out.println(list);list.add("mysql");System.out.println(list);//在指定位置添加元素list.add(0, "python");System.out.println(list);//添加多个元素list.addAll(List.of("html", "css"));System.out.println(list);//在指定位置添加多个元素list.addAll(0, List.of(100, 200, 300, 400, 500));System.out.println(list);

输出结果:

 1.1.1.2,ArrayList的remove()删除方法

示例演示:

         List list = new ArrayList();list.addAll(List.of("java","php","c","go","c++","java","c"));System.out.println(list);//删除元素remove(Object o) remove(int index)//此时删除的是索引为5的元素,如果下标没有5就出异常//删除对象,成功返回布尔true,失败返回falsevar oo = list.remove(5);System.out.println(oo);//删除子集合,只要陈工删除一个元素就返回trueSystem.out.println(list.removeAll(List.of("mysql", "java")));System.out.println(list);//清空集合list.clear();System.out.println(list);

输出结果:

1.1.1.3,ArrayList的contains()判断方法

示例演示:

        List list = new ArrayList();list.addAll(List.of("java","php","c","go","c++","java","c"));System.out.println(list);//判断某一个元素是否存在System.out.println(list.contains("php"));//判断集合是否为空System.out.println(list.isEmpty());//判断多个元素是否都存在,有一个不存在就返回falseSystem.out.println(list.containsAll(List.of("mysql", "java")));

 输出结果:

1.1.1.4,ArrayList的set()排序方法和size()大小方法

示例演示:

        List list = new ArrayList();list.addAll(List.of("java","php","c","go","c++","java","c"));System.out.println(list);System.out.println(list.size());list.set(0,"c++");System.out.println(list);

输出结果:

1.1.1.5,ArrayList的遍历

 示例演示:

        List list = new ArrayList();list.addAll(List.of("java","php","c","go","c++","java","c"));System.out.println(list);//集合遍历for (Object obj : list) {System.out.println(obj);}for (int i = 0; i < list.size(); i++) {System.out.printf("list.get(%d) = %s%n", i, list.get(i));}

 输出结果:

1.1.2,LinkedList

extends AbstractSequentialList

        LinkedList同时实现了 List 接口和 Deque 对口,也就是收它既可以看作一个顺序容器,又可以看作一 个队列(Queue),同时又可以看作一个栈(stack),这样看来,linkedList简直就是无敌的,当你需要使 用栈或者队列时,可以考虑用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类,更遗憾的是, Java里根本没有一个叫做Queue的类(只是一个接口的名字)。关于栈或队列,现在首选是ArrayDeque, 它有着比LinkedList(当作栈或队列使用时)更好的性能。

        LinkedList常用方法同ArrayList基本相同,可以参照Arraylist尝试。

1.2,Set接口

        Set接口继承了Collection接口,集合中元素是不能重复的。如果有相关的元素重复内容,就保留原来的 元素,添加的元素取消,不能随机读取元素,没有顺序。

        public interface Set extends Collection

1.2.1,HashSet

        实例化HashSet:

示例演示:

        HashSet hashset1=new HashSet();Set hashset2=new HashSet();var hashset=new HashSet();

1.2.1.1,HashSet的add()添加方法

示例演示:

        HashSet hashset=new HashSet();hashset.add("java");hashset.add("c");hashset.add("php");hashset.add("go");hashset.add("java");System.out.println(hashset);hashset.addAll(List.of("nihao","小明"));System.out.println(hashset);

输出结果:

1.2.1.2,HashSet的remove()删除方法

示例演示:

        HashSet hashset=new HashSet(List.of(10,50,30,80,5));System.out.println(hashset);System.out.println(hashset.remove(50));System.out.println(hashset);System.out.println(hashset.removeAll(List.of(80, 4, 3)));System.out.println(hashset);

输出结果:

 

 1.2.1.3,HashSet的contains()判断方法

示例演示:

        HashSet hashset=new HashSet(List.of(10,50,30,80,5));System.out.println(hashset);System.out.println(hashset.contains(5));System.out.println(hashset.containsAll(List.of(10, 5)));System.out.println(hashset.containsAll(List.of(10, 5,4)));

输出结果:

1.2.1.4,HashSet的size()大小方法和clear()清空方法

示例代码:

        HashSet hashset=new HashSet(List.of(10,50,30,80,5));System.out.println(hashset);System.out.println(hashset.size());hashset.clear();System.out.println(hashset);

输出结果:

 1.2.2,Treeset

        是一个有序,可排序的(默认是升序),不可重复元素的集合工具类。

示例演示:

        //实例化TreeSet对象//Set treemap=new TreeSet();TreeSet treeset=new TreeSet(List.of(5,9,8,4,55,4,1));System.out.println(treeset);

输出结果:

二,Map集合

         map接口是一个双列集合,每个元素有一个键值 对 Map

  • 1.Map是一个双列集合,一个元素包含两个值(一个key,一个value)
  • 2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
  • 3.Map中的元素,key不允许重复,value可以重复
  • 4.Map里的key和value是一一对应的。

        map集合方法:

2.1,HashMap集合

         HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着他不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。 

        实例化HashMap

        //实例化HashMap,使用泛型Map<String,Integer> hash1=new HashMap<>();HashMap<String,Integer> hash2=new HashMap<>();//不使用泛型HashMap hash=new HashMap();

2.1.1,HashMap的put()添加方法

示例代码:

        HashMap hash=new HashMap();hash.put("小黑",1);hash.put("小黄",1);hash.put("小吕",1);hash.put("小黑",2);System.out.println(hash);

输出结果:

  

2.1.2,HashMap的get()获取方法

示例代码:

        HashMap hash=new HashMap();hash.put("小黑",1);hash.put("小黄",1);hash.put("小吕",1);hash.put("小黑",2);System.out.println(hash);System.out.println(hash.get("小黑"));System.out.println(hash);

输出结果:

  

2.1.3,HashMap的containkey()和containvalue判断方法

示例代码:

        HashMap hash=new HashMap();hash.put("小黑",1);hash.put("小黄",1);hash.put("小吕",1);hash.put("小黑",2);System.out.println(hash);System.out.println(hash.containsKey("小黑"));System.out.println(hash.containsValue(1));

输出结果:

  

2.1.4,HashMap的remove()删除方法

示例代码:

        HashMap hash=new HashMap();hash.put("小黑",1);hash.put("小黄",1);hash.put("小吕",1);hash.put("小黑",2);System.out.println(hash);System.out.println(hash.remove("小黑"));System.out.println(hash.remove("小吕", 1));

输出结果:

  

2.1.5,HashMap的遍历

2.1.5.1,HashMap的keyset()遍历方法

示例代码:

        HashMap hash=new HashMap();hash.put("小黑",1);hash.put("小黄",1);hash.put("小吕",1);hash.put("小黑",2);System.out.println(hash);for (Object o : hash.keySet()) {System.out.println(o);}

输出结果:

  

2.1.5.2,HashMap的values()遍历方法

示例代码:

        HashMap hash=new HashMap();hash.put("小黑",1);hash.put("小黄",1);hash.put("小吕",1);hash.put("小黑",2);System.out.println(hash);for (Object value : hash.values()) {System.out.println(value);}

输出结果:

  

2.2,TreeMap集合

        1. 是一个有序的key-value集合,它是通过红黑树实现的。该映射根据其键的自然顺序进行排序,或 者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

        2. 是继承了AbstractMap,也是以key-value集合存储。实现了NavigableMap接口,可以支持一系列 的导航方法。 比如返回有序的key集合。实现了Cloneable克隆接口。实现了java.io.Serializable序列化接口。另 外,TreeMap是非线程同步的。

实例化TreeMap

        //实例化TreeMap,使用泛型Map<String,Integer> treemap1=new TreeMap<>();TreeMap<String,Integer> treemap2=new TreeMap<>();//不使用泛型TreeMap treemap=new TreeMap();

TreeMap应用

示例代码:

        TreeMap treemap=new TreeMap();treemap.put("小黑",1);treemap.put("小黄",1);treemap.put("小吕",1);treemap.put("小黑",2);System.out.println(treemap);

输出结果:

  

相关文章:

JAVA基础-集合(List与Map)

目录 引言 一&#xff0c;Collection集合 1.1,List接口 1.1.1&#xff0c;ArrayList 1.1.1.1&#xff0c;ArrayList的add&#xff08;&#xff09;添加方法 1.1.1.2&#xff0c;ArrayList的remove&#xff08;&#xff09;删除方法 1.1.1.3&#xff0c;ArrayList的contai…...

19 QListWidget控件

Tips: 对于列表式数据可以使用QStringList进行左移一块输入。 代码&#xff1a; //listWidget使用 // QListWidgetItem * item new QListWidgetItem("锄禾日当午"); // QListWidgetItem * item2 new QListWidgetItem("汗滴禾下土"); // ui->…...

手动安装docsify

安装docsify详见&#xff1a;docsify 1、下载 wget https://codeload.github.com/docsifyjs/docsify/zip/refs/heads/master -o docsify-master.zip 2、解压 unzip docsify-master.zip 3、移动文件到nginx的html所在目录【略】 4、配置nginx&#xff0c;示例如下 locati…...

yaml语法详解

#kv #对空格的严格要求十分高 #注入到我们的配置类中 #普通的keyvalue name: qinjiang#对象 student:name: qingjiangage: 3#行内写法 student1: {name: qinjiang,age: 3}#数组 pets:- cat- dog- pigpet: [cat,dog,pig]yaml可以给实体类赋值 person:name: kuangshenage: 19happ…...

ubuntu下tmux安装

目录 0. 前言1. Tmux介绍2. 安装3. 验证安装 0. 前言 本节安装tmux终端复用工具&#xff0c;在Ubuntu中运行一些服务或脚本的时候往往不能退出终端&#xff0c;需要一直挂着。在有图形界面的linux中你还可以新开一个终端去做别的事&#xff0c;但是在无界面linux中&#xff0c…...

ssh打开远程vscode

如果想要远程打开其他终端的vscode&#xff0c;首先要知道远程终端的ip地址和用户名称以及用户密码 1、打开本地vscode 2、点击左下角蓝色区域 3、页面上部出现如下图&#xff0c;点击ssh&#xff0c;我这里已经连接&#xff0c;所以是connect to host 4、选择Add New SSH Host…...

Socket发送数据---winsock库和boost库

一个是通过winsock库提供的api实现,一个是boost库实现,两个方法都可以,因为项目是vc++6.0实现的,不支持boost库,只能使用winsock库,vc++6.0太老,局限性大。 通过Winsock库提供的API 通过UDP #include<winsock2.h> #include<vector> #include<WS2tcpip.h…...

Qt Core学习日记——第七天QMetaObject(上)

每一个声明Q_OBJECT的类都具有QMetaObject对象 Q_OBJECT宏源代码&#xff1a; #define Q_OBJECT \ public: \ QT_WARNING_PUSH \ Q_OBJECT_NO_OVERRIDE_WARNING \ static const QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ vir…...

100、用简洁的语言描述一下:TCP的三次握手和四次挥手(不需要长篇大论)

TCP的三次握手和四次挥手 TCP协议是7层网络协议中的传输层协议&#xff0c;负责数据的可靠传输。 1、三次握手 在建立TCP连接时&#xff0c;需要通过三次握手来建立&#xff0c;过程是: 客户端向服务端发送一个SYN服务端接收到SYN后&#xff0c;给客户端发送一个SYN_ACK客户…...

中南大学硕士论文latex版本全指导

要毕业了&#xff0c;闲下点时间写的东西。之前一直收益与师兄师姐流传下来的latex版本&#xff0c;用起来很舒服&#xff0c;希望后面的学弟学妹也能完美用上。latex功能很强大&#xff0c;不需要自己排版&#xff0c;只管内容即可&#xff0c;但是安装流程会多一丢丢。 目录 …...

RFC8470在HTTP中使用早期数据

摘要 使用TLS早期数据会暴露出重放攻击的可能性。本文定义了允许客户端与服务器就早期数据中发送的HTTP请求进行通信的机制。描述了使用这些机制来减轻重放风险的技术。 1. 介绍 TLS 1.3[TLS13]引入了早期数据&#xff08;也称为零往返时间&#xff08;0-RTT&#xff09;数…...

macOS Big Sur 11.7.9 (20G1426) 正式版 ISO、PKG、DMG、IPSW 下载

macOS Big Sur 11.7.9 (20G1426) 正式版 ISO、PKG、DMG、IPSW 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Window…...

【LeetCode】62.不同路径

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; …...

使用序列化和反序列化函数archivedDataWithRootObject和unarchivedObjectOfClasses的使用和遇到问题及解决方案

为何archiveRootObject和unarchiveObjectWithFile正常&#xff0c;而archivedDataWithRootObject和unarchivedObjectOfClasses一直报错。 [NSKeyedArchiver archiveRootObject:account toFile:path];和c PPAccountModel *account [NSKeyedUnarchiver unarchiveObjectWithFile:…...

python获取鼠标出颜色

import pyautogui as pg import keyboarddef rgb2hex(r, g, b):return #{:02x}{:02x}{:02x}.format(r, g, b)try:width, height pg.size()print(f"Display resolution: {width} * {height}\n") # 打印屏幕分辨率print(按下shift键打印出鼠标所指位置的颜色......)w…...

Github Flow工作流简单介绍(以部署为中心的开发模式)

前言 这篇文章主要介绍Github Flow的理念&#xff0c;以下内容来源于《Github入门与实践》。 Github Flow是以部署为中心的开发模式&#xff0c;通过简单的规则&#xff0c;持续高速且安全地进行部署。而Gitflow则是以发布为中心的分支管理模型&#xff0c;它提供了一种更灵活…...

selenium浏览器驱动下载

Chrome谷歌浏览器 下载地址&#xff1a;http://chromedriver.storage.googleapis.com/index.html 不同的Chrome的版本对应的chromedriver.exe 版本也不一样&#xff0c;下载时不要搞错了。 如果是最新的Chrome, 下载最新的chromedriver.exe 就可以了。 Firefox火狐浏览器 驱…...

go学习 模块与包 - Init函数 - 如何导入第三方包 - 切片与数组的数据传递方式 - go中文件的读写

目录 包&#xff08;package&#xff09;是组织和复用代码的基本单元。 包的种类&#xff1a; 包的导入 包的组成 如下两个文件中定义了A变量和 sc_num变量&#xff0c;他们的首字母开头分别为大写和小写&#xff0c;因此可以说明A变量是公有变量&#xff0c;而sc_num是私…...

2023第五届全国生物资源提取与应用创新论坛即将举办

01、会议背景 为进一步加强生物资源提取行业交流与合作&#xff0c;促进业“产学研用”融合&#xff0c;提升行业科技创新水平&#xff0c;增强行业国际竞争力&#xff0c;中国生物发酵产业协会、浙江科技学院、浙江工业职业技术学院、浙江省农业生物资源生化制造协同创新中心&…...

Socks5代理在爬虫与HTTP应用中的重要性

IP代理的类型及原理常见的IP代理类型有HTTP代理、Socks代理等&#xff0c;本文重点关注Socks5代理。Socks5代理是一种网络协议&#xff0c;可以实现传输层的数据转发&#xff0c;使客户端在不直接连接服务器的情况下与其进行通信。其原理在于接收客户端的请求&#xff0c;然后将…...

二叉树详解

这里写目录标题 前言树型结构(了解)树常见的概念树的表示形式&#xff08;了解&#xff09;树的应用 二叉树概念两种特殊的二叉树二叉树的性质(重要)二叉树的存储二叉树的基本操作 前言 本篇博客讲述了以下几个知识点 树的基本概念二叉树概念及特性二叉树的基本操作 树型结构…...

Git的核心概念:探索Git中的提交、分支、合并、标签等核心概念,深入理解其作用和使用方法

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…...

JAVA设计模式——23种设计模式详解

一、什么是设计模式&#x1f349; 设计模式&#xff08;Design pattern&#xff09; 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目…...

Oracle输出文本平面(CSV、XML)文本数据详细过程

此过程是提供给前端,调用的接口,为报表提供”下载“功能。以下是本人在测试环境的测试,有什么不足的地方,请留言指教,谢谢。 1、测试表 分别对测试表输出csv、xml两种格式文件数据。前期的准备工作。 --在服务器端创建directory,用管理员用户 create or replace directo…...

基于C++的QT基础教程学习笔记

文章目录&#xff1a; 来源 教程社区 一&#xff1a;QT下载安装 二&#xff1a;注意事项 1.在哪里写程序 2.如何看手册 3.技巧 三&#xff1a;常用函数 1.窗口 2.相关 3.按钮 4.信号与槽函数 5.常用栏 菜单栏 工具栏 状态栏 6.铆接部件 7.文本编辑 8…...

【数据分享】全国地级市1999—2020年工业企业数(Shp/Excel格式)

在之前的文章中&#xff0c;我们分享过基于2000-2022年《中国城市统计年鉴》整理的1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额&#xff08;可查看之前的…...

设计模式【行为型】-- 责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许多个对象依次处理同一个请求&#xff0c;形成一条责任链。当客户端提交一个请求时&#xff0c;请求沿着责任链传递&#xff0c;直到有一个处理者能够处理该请求为止。…...

[Spring] 三级缓存解决循环依赖详解

什么是循环依赖 注册一个bean对象的过程&#xff1a; Spring扫描class得到BeanDefinition – 根据得到的BeanDefinition去生成bean – 现根据class推断构造方法 – 根据推断出来的构造方法&#xff0c;反射&#xff0c;得到一个对象 – 填充初始对象中的属性(依赖注入) – 如果…...

gerrit 从安装到出坑

一般公司在做代码审核的时候选择codereview gerrit来处理代码的入库的问题。 它是通过提交的时候产生Change-Id: If4e0107f3bd7c5df9e2dc72ee4beb187b07151b9 来决定是不是入库&#xff0c;一般如果不是通过这个管理&#xff0c;那么就是我们通常的操作 git add . git comm…...

Java工程师就业前景怎么样?能拿多少工资?

Java软件工程师是指运用Java这个开发工具去完成软件产品的软件程序设计、开发、测试、维护升级等工作的人员。Java程序员可以分为初级、中级、高级、资深等。不同级别的Java程序员&#xff0c;薪资也不一样。 Java除了一般的编程&#xff0c;还可以开发游戏、进行桌面设计、Ja…...