Java筑基-集合[Set、Map、List、Stack、Queue]

在这里插入图片描述


这里写目录标题

  • 一、Collection接口结构图
  • 二、Set集合
    • 1、常用方法
  • 三、List集合
    • 1、List集合常用方法
    • 2、代码案例
  • 四、Stack集合
    • 1、方法
    • 2、代码展示
  • 五、Queue集合
    • 1、常用的方法
    • 2、代码展示
  • 六、Map集合
    • 1、基本概念
    • 2、常用方法
    • 3、代码展示

一、Collection接口结构图

在这里插入图片描述

二、Set集合

是Collection集合的子集合,与List集合平级
该集合中元素没有先后放入次序,且不允许重复
该集合的主要实现类是:HashSet类、 TreeSet类、LinkedHashSet类

  • HashSet类采用哈希表进行数据管理
  • TreeSet类采用红黑树进行数据管理

1、常用方法

准备一个Set集合指向HashSet对象,向该集合中添加元素"two"并打印,再向集合中添加元素"one"并打印,再向集合中添加元素"three"并打印,再向集合中添加"one"并打印。

package com.company.listp;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.HashSet;public class SetDemo {public static void main(String[] args) {System.out.println("------------------HashSet-----------------");Set set = new HashSet();System.out.println("set集合:"+set);boolean obj = set.add("hello");System.out.println("添加是否成功:"+obj);System.out.println("Set集合:"+set);boolean obj1=set.add("one");System.out.println("添加是否成功:"+obj1);System.out.println("Set集合:"+set);System.out.println("------------------LinkedHashSet-----------------");Set set1 = new LinkedHashSet();System.out.println("set1集合:"+set1);boolean o=set1.add("one");System.out.println("添加元素是否成功:"+o);System.out.println("set集合:"+set1);boolean o1=set1.add("two");System.out.println("添加元素是否成功:"+o1);System.out.println("set集合:"+set1);}
}
set集合:[]
添加是否成功:true
Set集合:[hello]
添加是否成功:true
Set集合:[one, hello]
------------------LinkedHashSet-----------------
set1集合:[]
添加元素是否成功:true
set集合:[one]
添加元素是否成功:true
set集合:[one, two]Process finished with exit code 0

三、List集合

java.util.List集合是Collection集合的子集合
List集合中允许有重复的元素并且有先后放入次序

List集合的主要实现类有:ArrayList类、LinkedList类、Stack类、Vector类。

  • ArrayList类的底层是采用动态数组进行数据管理的,支持下标访问增删元素不方便
  • LinkedList类的底层是采用双向链表进行数据管理的,访问不方便增删元素方便
  • Stack类的底层是采用动态数组进行数据管理的,主要管理的是后进先出特征的数据结构,叫做栈
  • Vector类是比ArrayList类更线程安全的类,但是效率比较低,已过时。每次扩容是2倍。

1、List集合常用方法

在这里插入图片描述

2、代码案例

package com.company.listp;
import java.util.ArrayList;
import java.util.List;
public class ListDemo {public static void main(String[] args) {//list集合声明List ls = new ArrayList();// 添加元素 Collectionls.add("one");ls.add("two");System.out.println(ls);   //[one, two]// add(int,E)ls.add(0,"study");ls.add(1,"play");System.out.println(ls);   //[study, play, one, two]// addAll()List ls1 = new ArrayList();ls1.add("qwe");ls1.add("asd");ls1.add("qwe");System.out.println(ls1);   //[qwe, asd]System.out.println("------------------addAll-----------------");ls.addAll(2,ls1);System.out.println(ls);  //[study, play, qwe, asd, one, two]System.out.println("------------------get-----------------");Object o=ls.get(2);System.out.println("获取下标元素:"+o);   //qweSystem.out.println("------------------get重写toString-----------------");System.out.println("ls="+ls);System.out.println("ls的长度为"+ls.size());System.out.println("------------------元素出现的索引位置-----------------");System.out.println(ls.indexOf("play"));         //list第一次出现的索引位置System.out.println(ls.lastIndexOf("qwe"));   //list最后一次出现的索引位置System.out.println("------------------set修改指定位置元素-----------------");ls.set(4,8888);System.out.println("ls:"+ls);   //ls:[study, play, qwe, asd, 8888, one, two]Integer ls5=(Integer) ls.set(4,"three");System.out.println(ls5);   //8888System.out.println("修改后的ls为:"+ls);   //修改后的ls为:[study, play, qwe, asd, three, one, two]System.out.println("------------------删除元素-----------------");ls.remove(ls.remove(0));System.out.println("删除后的ls为:"+ls);  //删除后的ls为:[play, qwe, asd, three, one, two]System.out.println("------------------获取子集合-----------------");//获取当前集合中的子集合,将集合的一部分内容获取出来//子集合和当前集合公用一块内存空间//获取当前集合 从下标1开始到3之间的元素[1,3) 包含1不包含3System.out.println("子集合为:"+ls.subList(1,3));}
}
[one, two]
[study, play, one, two]
[qwe, asd, qwe]
------------------addAll-----------------
[study, play, qwe, asd, qwe, one, two]
------------------get-----------------
获取下标元素:qwe
------------------get重写toString-----------------
ls=[study, play, qwe, asd, qwe, one, two]
ls的长度为7
------------------元素出现的索引位置-----------------
1
4
------------------set修改指定位置元素-----------------
ls:[study, play, qwe, asd, 8888, one, two]
8888
修改后的ls为:[study, play, qwe, asd, three, one, two]
------------------删除元素-----------------
删除后的ls为:[play, qwe, asd, three, one, two]
------------------获取子集合-----------------
子集合为:[qwe, asd]Process finished with exit code 0

四、Stack集合

1、方法

在这里插入图片描述

2、代码展示

package com.company.listp;import java.util.Stack;public class StackDemo {public static void main(String[] args) {//1、准备Stack集合Stack stack=new Stack();System.out.println("stack="+stack);//2、数据11、22、33、44、55依次入栈for (int i=2;i<6;i++){Object push = stack.push(i*11);System.out.println("入栈的元素为:"+push);System.out.println("栈中的元素有:"+stack);}//查看栈顶元素并打印Object peek = stack.peek();System.out.println("栈顶元素:"+peek);//栈中所有数据依次出栈并打印int len=stack.size();for(int i=0;i<len;i++){System.out.println("出栈的元素:"+stack.pop());}//出完了之后打印,里面为空System.out.println(stack);}
}
stack=[]
入栈的元素为:22
栈中的元素有:[22]
入栈的元素为:33
栈中的元素有:[22, 33]
入栈的元素为:44
栈中的元素有:[22, 33, 44]
入栈的元素为:55
栈中的元素有:[22, 33, 44, 55]
栈顶元素:55
出栈的元素:55
出栈的元素:44
出栈的元素:33
出栈的元素:22
[]Process finished with exit code 0

五、Queue集合

是Collection集合的子集合,与List集合属于平级
Queue集合的主要描述先进先出特征的数据结构,叫做队列
该集合的主要实现类是LinkedList类

1、常用的方法

在这里插入图片描述

2、代码展示

package com.company.listp;
import java.util.Queue;
import java.util.LinkedList;
public class QueueDemo {public static void main(String[] args) {//1.Queue queue = new LinkedList();//2.元素放入队列中for (int i = 1; i < 6; i++) {boolean offer = queue.offer(i * 11);System.out.println("queue队列中元素有:" + queue);}//3.查看队列首位元素System.out.println("队列首位元素:"+ queue.peek());//11//4.队列数据出队int len = queue.size();for (int i = 1; i <= len; i++) {System.out.println("出队元素:"+ queue.poll());}//5,队列中元素System.out.println(queue);//[]}
}
queue队列中元素有:[11]
queue队列中元素有:[11, 22]
queue队列中元素有:[11, 22, 33]
queue队列中元素有:[11, 22, 33, 44]
queue队列中元素有:[11, 22, 33, 44, 55]
队列首位元素:11
出队元素:11
出队元素:22
出队元素:33
出队元素:44
出队元素:55
[]Process finished with exit code 0

六、Map集合

1、基本概念

Map<K,V>集合基本单位是:单对元素
K - 维护的键(Key)的类型,相当于目录
V - 映射值(Value)的类型,相当于内容
key不允许重复
一个key只能对应一个value

Map集合的主要实现类有:HashMap类、TreeMap类、LinkedHashMap类、Hashtable类、Properties类
在这里插入图片描述

2、常用方法

在这里插入图片描述

3、代码展示

package com.company.mapp;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo {public static void main(String[] args) {Map<String, String> m1 = new HashMap<>();System.out.println("m1:" + m1); //{}//putString p = m1.put("qwe", "ert");System.out.println("p:" + p); //nullSystem.out.println("m1:" + m1); //m1:{qwe=ert}p = m1.put("asd", "zxcz");System.out.println("p:" + p); //nullSystem.out.println("m1:" + m1); //m1:{asd=zxcz, qwe=ert}System.out.println(m1.get("asd"));  //zxczboolean containsKey = m1.containsKey("1");System.out.println("是否包含:" + containsKey);  //是否包含:falsecontainsKey = m1.containsKey("asd");System.out.println("是否包含:" + containsKey);  //是否包含:trueboolean containsValue = m1.containsValue("1");System.out.println("是否包含:" + containsValue);  //是否包含:falsecontainsValue = m1.containsValue("ert");System.out.println("是否包含:" + containsValue);  //是否包含:trueString s = m1.get("asd");System.out.println("获取元素:" + s);   //获取元素:zxczs = m1.get("123123");System.out.println("获取元素:" + s);  //获取元素:nullString r = m1.remove("asd");System.out.println("删除的value为:" + r);  //删除的value为:zxczSystem.out.println("m1为:" + m1);    //m1为:{qwe=ert}Set<String> keyset = m1.keySet();m1.put("ppp", "rrr");System.out.println("set集合为:" + keyset);    //set集合为:[ppp, qwe]//获取键值对Set<Map.Entry<String, String>> entries = m1.entrySet();for (Map.Entry<String, String> map : entries) {System.out.println(map);        //ppp=rrr  qwe=ert}}
}

执行结果

m1:{}
p:null
m1:{qwe=ert}
p:null
m1:{asd=zxcz, qwe=ert}
zxcz
是否包含:false
是否包含:true
是否包含:false
是否包含:true
获取元素:zxcz
获取元素:null
删除的value为:zxcz
m1为:{qwe=ert}
set集合为:[ppp, qwe]
ppp=rrr
qwe=ertProcess finished with exit code 0

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

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

相关文章

小熊家务帮day8-day9 客户管理模块2 (用户定位,地址簿,实名认证,银行卡信息上传等功能)

客户管理模块 0.用户定位功能0.1 需求0.2 接口分析0.3 接口开发Controller层开发Service层开发 1.我的地址簿功能1.1 需求1.2 数据库设计1.3 新增地址簿1.3.1 接口设计1.3.2 接口开发Controller层开发Service层开发测试功能 1.4 地址簿查询1.4.1 接口设计1.4.2 接口开发Control…

Caliburn.Micro框架学习笔记——多页面处理案例

在聊这个之前&#xff0c;我们先来看一个静态类 在 Caliburn.Micro 中&#xff0c;ViewLocator 是一个用于查找和关联视图与视图模型的静态类。默认情况下&#xff0c;它根据约定&#xff08;命名约定或其他规则&#xff09;自动找到与视图模型相对应的视图。然而&#xff0c;…

C语言 | Leetcode C语言题解之第126题单词接龙II

题目&#xff1a; 题解&#xff1a; char** list; int** back; int* backSize;// DFS uses backtrack information to construct results void dfs(char*** res, int* rSize, int** rCSizes, int* ans, int last, int retlevel) {int i ans[last];if (i 0) {res[*rSize] (c…

langchain构建一个 Agent 的过程

构建一个 Agent 的过程 概述 在使用大型语言模型&#xff08;LLM&#xff09;时&#xff0c;语言模型本身无法直接采取行动&#xff0c;只能输出文本。LangChain 的一个重要用例是创建代理&#xff08;Agents&#xff09;。代理是使用 LLM 作为推理引擎的系统&#xff0c;用于…

运用selenium爬取京东商品数据储存到MySQL数据库中

使用Selenium爬取京东商品数据并存储到MySQL数据库中的过程可以分为几个步骤&#xff1a; 1. 准备工作 安装所需库 确保你已经安装了Python环境以及以下库&#xff1a; selenium&#xff1a;用于自动化浏览器操作。pymysql 或 mysql-connector-python&#xff1a;用于连接M…

在MongoDB中,您可以通过以下步骤来创建账号密码,并限制其在特定数据库上的访问权限

在MongoDB中&#xff0c;您可以通过以下步骤来创建账号密码&#xff0c;并限制其在特定数据库上的访问权限&#xff1a; 连接到MongoDB数据库&#xff1a; 使用MongoDB的客户端&#xff08;如mongo shell或者MongoDB Compass&#xff09;连接到MongoDB服务器。 切换到admin数…

【TensorFlow深度学习】池化层的功能与类型详解

池化层的功能与类型详解 池化层的功能与类型&#xff1a;深度学习中的维度缩减与特征抽取艺术概述主要的池化类型结语 池化层的功能与类型&#xff1a;深度学习中的维度缩减与特征抽取艺术 在深度神经网络架构中&#xff0c;池化层&#xff08;Pooling Layer&#xff09;是一个…

实验报告 GUI窗体和标签

实验目的&#xff1a; 理解AWT和Swing工具包 掌握窗体和组件的创建方法。 实验要求&#xff1a; &#xff08;1&#xff09;掌握创建GUI窗体的操作 &#xff08;2&#xff09;掌握标签的使用 &#xff08;3&#xff09;代码应遵循Java编程规范&#xff0c;包含恰当的注释…

Kotlin 嵌套类和内部类

文章目录 嵌套类内部类 嵌套类 在类的内部可以定义其他的类&#xff0c;这是类结构上的嵌套&#xff08;Nested&#xff09;。 class Container {val name "Container"class NestedClass {fun getter() {// 此时无法访问外部类的成员// name}} }Note&#xff1a;接…

源码分析の前言

源码分析路线图&#xff1a; 初级部分&#xff1a;ArrayList->LinkedList->Vector->HashMap(红黑树数据结构&#xff0c;如何翻转&#xff0c;变色&#xff0c;手写红黑树)->ConcurrentHashMap 中级部分&#xff1a;Spring->Spring MVC->Spring Boot->M…

用Python装饰器打造强大的日志系统

用Python装饰器打造强大的日志系统 日志记录是软件开发中不可或缺的一部分&#xff0c;它帮助开发者追踪程序的执行过程、调试错误和分析性能。Python提供了多种日志记录工具&#xff0c;但如何将日志记录功能优雅地集成到代码中&#xff0c;是一个值得探讨的问题。本文将介绍如…

机器学习中的神经网络重难点!纯干货(下篇)

纯干货 目录 长短时记忆网络 基本原理 一个示例 自注意力模型 基本原理 自注意力机制 具体步骤 一个案例 生成对抗网络 基本原理 一个案例 长短时记忆网络 LSTM就像一个有记忆的人&#xff0c;可以记住重要的信息并且忘记不重要的。 特别擅长处理长序列数据&#…

网上蛋糕售卖店管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;店员管理&#xff0c;用户管理&#xff0c;商品管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;公告信息&#xff0c;商品…

2024医美如何做抖音医美抖音号,本地团购、短视频直播双ip爆品引流,实操落地课

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89307619 更多资源下载&#xff1a;关注我。 课程内容&#xff1a; 01-0-序.mp4 02-01-账号定位.mp4 03-02-误区.mp4 04-03-五件套.mp4 05-04-文案怎么来.mp4 06-05-对标怎么弄.mp4 07-06-人设怎…

Go实现阻塞读且并发安全的map

GO里面MAP如何实现key不存在 get操作等待 直到key存在或者超时&#xff0c;保证并发安全&#xff0c;且需要实现以下接口&#xff1a; type sp interface {Out(key string, val interface{}) //存入key /val&#xff0c;如果该key读取的goroutine挂起&#xff0c;则唤醒。此方…

进程与线程(四)

进程与线程&#xff08;四&#xff09; 基于System V IPC对象的进程间通信机制SystemV IPC引入查看Linux系统中IPC工具的方式查看所有IPC工具命令&#xff1a;ipcs 查看指定的IPC工具key值获取方法&#xff1a;ftok()函数 消息队列消息队列的特征&#xff1a;消息队列的操作打开…

处理多对一的映射关系

1、级联属性赋值 Emp实体类中设置Dept 属性并生成get、set方法,生成toString方法,但是构造方法不必包含此属性 在EmpMapper.xml文件中: <resultMap id="empAndDeptResultMapOne" type="Emp"><id property="eid" column="eid…

Python知识点5---字符串的使用

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的字符串在使用上和其他语言的差别不大&#xff0c;常规操作都…

AndroidStudio使用高德地图API获取手机定位

一、高德地图API申请 首先去高德注册开发者账号 下面这两个选项&#xff0c;也是我们项目成功的关键 1.1怎么获取SHA1指纹密码 ①使用AS自带的签名文件 你的用户文件下面会有一个.android文件夹,进入文件夹,在这个路径下打开cmd 如果.android下面没有签名文件参考创建文章 …

挂载SMB和NFS共享目录

挂载SMB共享目录//192.168.3.191/OMV&#xff1a; ubuntu需要安装cifs工具&#xff1a; sudo apt install cifs-utils sudo mount.cifs //192.168.3.191/OMV /mnt -o usersamba,passsamba “samba”用户需要是一个samba用户&#xff0c;并且有访问OMV目录的权限。 挂载NFS共…