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对象有几种方式:

实例演示:

        //实例化 ArrayList
        ArrayList 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()添加方法

实例演示:

        //实例化,这们实例化,集合可以添加任何类型的元素 默认是Object
        List 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,失败返回false
        var oo = list.remove(5);
        System.out.println(oo);
        //删除子集合,只要陈工删除一个元素就返回true
        System.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());
        //判断多个元素是否都存在,有一个不存在就返回false
        System.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.mfbz.cn/a/45977.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络超时导致namenode被kill的定位

交换机升级导致部分网络通信超时, 集群的namenode主从切换后,主namenode进程被杀死。 网络问题导致namenode与zk间的连接超时触发了hadoop集群的防脑裂机制而主动kill掉了超时的namenode进程。 日志分析发现zk和namenode之间的网络连接超时: 超时触发了namenode切换,并将超时…

游戏引擎UE如何革新影视行业?创意云全面支持UE云渲染

虚幻引擎UE&#xff08;Unreal Engine&#xff09;作为一款“殿堂级”的游戏引擎&#xff0c;占据了全球80%的商用游戏引擎市场&#xff0c;但如果仅仅将其当做游戏开发的工具&#xff0c;显然是低估了它的能力。比如迪士尼出品的电视剧《曼达洛人》、电影《狮子王》等等都使用…

白话机器学习笔记(三)评估已建立的模型

模型评估 在进行回归和分类时&#xff0c;为了进行预测&#xff0c;我们定义了函数 f θ ( x ) f_\theta(x) fθ​(x)&#xff0c;然后根据训练数据求出了函数的参数 θ \theta θ。 如何预测函数 f θ ( x ) f_\theta(x) fθ​(x)的精度&#xff1f;看它能否很好的拟合训练数…

【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权

一、API接口文档平台 使用API接口文档不经可以很好的的维护接口数据&#xff0c;还给测试人员的接口测试工作带来了便利&#xff1b; 我们可以在全局配置文件中添加路由路径生成接口文档 1、使用docs接口文档维护接口 1.1在全局配置文件里指定用于支持coreapi的Schema # 指…

Linux の shell 流程控制

条件控制 # if then 如果else 没有语句 可以省略 if condition then#语句 fi# if then 。。。 else 。。。 fi if condition then#语句 else#语句 fi# if condition then#语句 elif condition2 then#语句 else#语句 fiif [ $a -gt $b ] thenecho "a > b&quo…

骆驼祥子思维导图

《骆驼祥子》简单介绍 《骆驼祥子》小说&#xff0c;以20世纪20年代的旧北京为背景。祥子所处的时代是北洋军阀统治的时代。今天我们就用ProcessOn 思维导图 来给大家解析这本名著。所有文章中的思维导图都可以到ProcessOn 模板社区获得。 1936年&#xff0c;老舍的一位山东大…

[vulnhub]DC2

文章目录 [vulnhub]DC2信息收集flag1flag2cewlwpscan flag3什么是rbash&#xff1f; flag4flag5git提权 总结 [vulnhub]DC2 信息收集 扫ip&#xff0c;有两种方式&#xff1a;arp、nmap nmap -sP 192.168.56.0/24 -T4arp-scan -l192.168.56.137 扫端口&#xff1a; nmap -…

Mendix 创客访谈录|综合业务展示大屏应用开发

本期创客 刘书智 西门子工业领域专家 我在西门子工厂自动化工程有限公司工作。一直从事SCADA产品的技术支持工作&#xff0c;已经过去17个年头了。赶上数字化发展的浪潮&#xff0c;不断学习各种IT技术&#xff0c;践行 IT与OT融合&#xff0c;希望借助自己的IT知识助力OT的发…

力扣1114.按序打印-----题目解析

题目描述 解析&#xff1a; class Foo {public int a 0;public Foo() {}public void first(Runnable printFirst) throws InterruptedException {// printFirst.run() outputs "first". Do not change or remove this line.printFirst.run();a;}public void second…

vue全局状态管理工具 Pinia 的使用

先了解一下关于Pinia的一些故事&#xff0c;面试把这些讲给面试官挺加分的&#xff0c;同时这是我持续学习下去的动力 1.为什么叫Pinia&#xff1f; 官网解释是西班牙语中的 pineapple&#xff0c;即“菠萝”&#xff0c;菠萝花是一组各自独立的花朵&#xff0c;它们结合在一起…

【C语言】函数----详解

&#x1f341; 博客主页:江池俊的博客 &#x1f4ab;收录专栏&#xff1a;C语言——探索高效编程的基石 &#x1f4bb; 其他专栏&#xff1a;数据结构探索 &#x1f3e9;代码仓库&#xff1a;江池俊的代码仓库 &#x1f3aa; 社区&#xff1a;C/C之家社区(欢迎大家加入与我一起…

安装VMware

D:\VMware\VMware Workstation\ 输入许可证

Sentinel 规则持久化到 Nacos

一、Sentinel规则管理模式&#x1f349; Sentinel的控制台规则管理有三种模式&#xff1a; 原始模式&#x1f95d; 原始模式&#xff1a;控制台配置的规则直接推送到Sentinel客户端&#xff0c;也就是我们的应用。然后保存在内存中&#xff0c;服务重启则丢失 pull模式&#…

一文详解Spring Bean循环依赖

一、背景 有好几次线上发布老应用时&#xff0c;遭遇代码启动报错&#xff0c;具体错误如下&#xff1a; Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name xxxManageFacadeImpl: Bean with name xxxManageFa…

实验数据origin作图使用经验总结

使用Origin绘制实验数据图表时&#xff0c;可以遵循以下经验总结&#xff1a; 选择合适的图表类型&#xff1a; 根据实验数据的性质和目的&#xff0c;选择合适的图表类型&#xff0c;例如散点图、折线图、柱状图、饼图等。确保图表类型能够清晰地展示数据趋势和关系。 规范坐…

常用API学习08(Java)

格式化 格式化指的是将数据按照指定的规则转化为指定的形式 。 那么为什么需要格式化&#xff1f;格式化有什么用&#xff1f; 以数字类为例&#xff0c;假设有一个比分牌&#xff0c;在无人得分的时候我们希望以&#xff1a;“00&#xff1a;00”的形式存在&#xff0c;那么…

3.安装kubesphere

1.本地存储动态 PVC # 在所有节点安装 iSCSI 协议客户端&#xff08;OpenEBS 需要该协议提供存储支持&#xff09; yum install iscsi-initiator-utils -y # 设置开机启动 systemctl enable --now iscsid # 启动服务 systemctl start iscsid # 查看服务状态 systemctl status …

【C++修炼之路】继承

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、概念及定义二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七…

C语言实现基于Linux,epoll和多线程的WebServer服务器

代码结构&#xff1a; Server.h 头文件&#xff0c;对函数进行了声明 #pragma once #include<stdio.h> // 新建一个用于TCP监听的socket文件描述符&#xff0c;并返回 int initListenFd(unsigned short port);// 启动epoll int epollRun(int lfd);// accept建立连接 vo…

NLP(六十一)使用Baichuan-13B-Chat模型构建智能文档问答助手

在文章NLP&#xff08;六十&#xff09;Baichuan-13B-Chat模型使用体验中&#xff0c;我们介绍了Baichuan-13B-Chat模型及其在向量嵌入和文档阅读上的初步尝试。   本文将详细介绍如何使用Baichuan-13B-Chat模型来构建智能文档问答助手。 文档问答流程 智能文档问答助手的流…
最新文章