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);

输出结果:

  

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

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

相关文章

web前端tips:js继承——借用构造函数继承

上篇文章给大家分享了 js继承中的原型链继承 web前端tips&#xff1a;js继承——原型链继承 在文章末尾&#xff0c;我提到了 原型链的继承&#xff0c;子类需要传递参数给父类的构造函数&#xff0c;就无法通过直接调用父类的构造函数来实现&#xff0c;需要通过中间的过程来…

Protobuf数据交互实战

"no one gonna make me down" 在之前呢&#xff0c;我们介绍了什么protobuf以及它的语法、数据类型。 一句老话说得好&#xff0c;"多说不练&#xff0c;假把式&#xff01;"。因此&#xff0c;本篇会选择以protobuf的语法&#xff0c;完成一个简易的通讯…

Godot 4 源码分析 - 获取脚本

获取属性列表 今天搂草打兔&#xff0c;取得了脚本内容 因为已能取得属性值&#xff0c;那就再进一步&#xff0c;取得属性名列表 if (SameText(drGet.propertyName, "propertyNames", DRGRAPH_FLAG_CASESENSITIVE)) {List<PropertyInfo> *p_list new List…

工信部、国家标准委联合印发《国家车联网产业指南(2023 版)》

国家工信部和标委发布了最新的《国家车联网产业标准体系建设指南&#xff08;智能网联汽车&#xff09;&#xff08;2023 版&#xff09;》&#xff0c;了解这篇文章&#xff0c;不论您是智能网联汽车的追随者&#xff0c;还是对智能网联汽车产业前景感兴趣的人&#xff0c;都非…

性能测试请求重试实现思路

文章目录 一、背景二、尝试的解决方案三、解决方案1&#xff1a;jmeter retrier插件&#xff01;有点用但是不是特别有用-_-||四&#xff0c;最终解决方案&#xff1a;lucust! 一、背景 最近系统需要压测一些活动&#xff0c;场景是新建抽奖活动之后&#xff0c;每隔2s查询1次…

Spring6——入门

文章目录 入门环境要求构建模块程序开发引入依赖创建java类创建配置文件创建测试类运行测试程序 程序分析启用Log4j2日志框架Log4j2日志概述引入Log4j2依赖加入日志配置文件测试使用日志 入门 环境要求 JDK&#xff1a;Java17&#xff08;Spring6要求JDK最低版本是Java17&…

1-Linux的目录结构

Linux的目录结构是规定好的&#xff0c;不可以随意进行更改&#xff01; Linux的文件系统是采用级层式的树状目录结构&#xff0c;最上层是根目录–/&#xff0c;然后再在根目录下创建其它的目录。 各个目录中主要负责的功能和作用如下&#xff1a;&#xff08;主体的结构一定…

引入第三方字体库 第三方字体库Google Fonts

googlefonts官方网站 googlefonts中国网站 本人是在微信小程序中引入 在static中建一个文件夹font-family 例如字体链接&#xff1a;https://fonts.font.im/css?familyKirangHaerang 将该链接的返回的资源的复制到css文件中 font-family.css /* [0] */ font-face {font-fam…

使用JMeter进行接口测试教程

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Ch…

使用node内置test runner,和 Jest say 拜拜

参考 https://nodejs.org/dist/latest-v20.x/docs/api/test.html#test-runner 在之前&#xff0c;我们写单元测试&#xff0c;必须安装第三方依赖包&#xff0c;而从node 20.0.0 版本之后&#xff0c;可以告别繁琐的第三方依赖包啦&#xff0c;可直接使用node的内置test runner…

centos中修改防火墙端口开放配置

1、直接进入文件修改 vim /etc/sysconfig/iptables 2、添加需要开放的端口 &#xff08;1&#xff09;添加需要开放的单个端口 4001 -A INPUT -m state --state NEW -m tcp -p tcp --dport 4001 -j ACCEPT &#xff08;2&#xff09;添加需要开放的某个网段端口 4001:4020 …

需求管理中最易忽视的6大重点

需求管理是产品经理的重点工作&#xff0c;如果无法有效进行需求管理&#xff0c;往往会引起需求变更、项目延期以及成本增加等问题。那么如何对需求进行高效管理&#xff0c;我们在需求管理中&#xff0c;往往最容易忽视的重点都有哪些&#xff1f; 1、重视项目整体管理计划 首…

VMWare虚拟机常用操作命令

今日一语&#xff1a;做到所有的细节都不放过&#xff0c;则可以避免99%已知的风险&#xff0c;但大多数都因懒惰而甘愿承受风险&#xff0c;至此悔不当初 查看虚拟机在本机网络的IP ip addr 本地向虚拟机传送文件 scp 文件 rootpath 虚拟机路径 enter后输入密码即可传输&am…

账号列表的删除编辑提交

<template><div><plan title"账号列表"><!-- selection-change"handleSelectionChange"添加这个属性就是点击可以得到你想要的value值 --><el-tablestyle"width: 100%":data"list"selection-change"h…

视频基础知识

1.视频比特率 视频的比特率是指传输过程中单位时间传输的数据量。可以理解为视频的编码采样率。单位是kbps&#xff0c;即每秒千比特。视频比特率是决定视频清晰度的一个重要指标。比特率越高&#xff0c;视频越清晰&#xff0c;但数据量也会越大。比如一部100分钟的电影&#…

K8S初级入门系列之五-Pod的高级特性

一、前言 前一篇我们了解了Pod的基本概念和操作&#xff0c;本篇我们继续研究Pod的一些高级特性&#xff0c;包括Pod的生命周期&#xff0c;pod探针&#xff0c;pod的调度等。 二、生命周期 1、Pod的生命周期 Pod的生命周期示意图如下&#xff1a; 挂起(Pending)&#xff0c…

【C进阶】指针进阶(1)_二次复习版

目录 1. 字符指针 1.1常量字符串的修改 加上const解决问题 打印常量字符串 1.2数组存放的字符串 1.3例题:数组创建与常量池的区别 2. 指针数组 2.1字符指针数组 2.2整型指针数组 2.3使用3个一维数组,模拟实现一个二维数组 2.4例题: 3.数组指针 3.1 数组指针的定义…

老年公寓人员定位管理系统:提升安全与关怀的智能解决方案

老年公寓作为提供安全居住环境和关怀服务的重要场所&#xff0c;面临着人员管理和安全控制的挑战。为了解决这些问题&#xff0c;老年公寓人员定位管理系统应运而生。基于为提供全面的安全管理和个性化关怀服务&#xff0c;华安联大便通过老年公寓人员定位管理系统的技术原理、…

数字孪生和 GIS 系统融合将为水利领域带来哪些变化?

随着科技的不断进步&#xff0c;数字孪生和 GIS 系统的融合应用逐渐成为了水利领域的新趋势。数字孪生是指通过数字化技术模拟物理实体和过程&#xff0c;将现实世界与虚拟世界相结合的技术&#xff0c;而 GIS 系统则是地理信息系统&#xff0c;用于收集、存储、管理和分析地理…

网工内推 | 售前、售后工程师,IE认证优先

01 广州佳杰科技有限公司 招聘岗位&#xff1a;IT售前工程师 职责描述&#xff1a; 1、负责所在区域 IT 产品的售前技术支持工作,包括客户交流、方案编写、配置报价、投标应标、测试、赋能等; 2、与厂商相关人员建立和保持良好的关系,相互配合,提高项目成功率和厂商满意度; 3、…