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…

实验报告 GUI窗体和标签

实验目的&#xff1a; 理解AWT和Swing工具包 掌握窗体和组件的创建方法。 实验要求&#xff1a; &#xff08;1&#xff09;掌握创建GUI窗体的操作 &#xff08;2&#xff09;掌握标签的使用 &#xff08;3&#xff09;代码应遵循Java编程规范&#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-人设怎…

进程与线程(四)

进程与线程&#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下面没有签名文件参考创建文章 …

Win10安装TensorRT

目录 什么是TensorRT 下载TensorRT 安装TensorRT 拷贝文件 安装whl文件 验证是否安装成功 什么是TensorRT TensorRT是由Nvidia推出的C语言开发的高性能神经网络推理库&#xff0c;是一个用于生成部署的优化器和运行时引擎。和cudnn类似&#xff0c;但它不支持训练&#xff…

开源与闭源 AI 模型:发展路径的比较与前瞻

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Git系列:rev-parse 使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

springboot 项目集成 knife4j

官方版本推荐 版本依赖 spring boot 2.3.12.RELEASE 和 knife4j 2.0.9 引入依赖 完整的pom.xml文件 <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter --> <dependency><groupId>com.github.xiaoymin</groupI…

OSEK错误处理及跟踪调试

1 前言 如表1所示&#xff0c;OSEK提供了一些特殊的钩子例程&#xff08;Hook routines&#xff09;&#xff0c;应用层可以在钩子函数中自定义操作&#xff0c;以参与到操作系统的内部处理中。 表1 钩子函数类型 钩子函数例程功能用途ErrorHook用于错误处理StartupHook在系统启…

Asp.Net Core 实现分片下载的最简单方式

技术群里的朋友遇到了这个问题&#xff0c;起初的原因是他对文件增加了一个属性配置 fileResult.EnableRangeProcessing true;这个属性我从未遇到过&#xff0c;然后&#xff0c;去F1查看这个属性的描述信息也依然少的可怜&#xff0c;只有简单的描述为(获取或设置为 启用范围…

Golang | Leetcode Golang题解之第125题验证回文串

题目&#xff1a; 题解&#xff1a; func isPalindrome(s string) bool {s strings.ToLower(s)left, right : 0, len(s) - 1for left < right {for left < right && !isalnum(s[left]) {left}for left < right && !isalnum(s[right]) {right--}if l…

GIS Java 生成四至图

目录 前言 操作步骤&#xff1a; 1&#xff0c;求出多边形的四至点 2&#xff0c;下载地图 3&#xff0c;绘制多边形 前言 对于地图上的一个多边形地块&#xff0c;其四至图就是能够覆盖这个多边形的最小矩形&#xff0c;也就是求出这个多边形的最东点&#xff0c;最西点&…

关于GPT-4o的使用感受和评价

如何评价GPT-4o? 简介&#xff1a; 最近&#xff0c;GPT-4o横空出世。GPT-4o的发布无疑是人工智能领域的一次重大飞跃&#xff0c;它不仅仅是一个技术产品的迭代&#xff0c;更是人机交互理念的一次革新。作为OpenAI倾力打造的最新旗舰模型&#xff0c;GPT-4o在前代产品的基础…

Vue.js2+Cesium1.103.0 十六、多模型轨迹运动

Vue.js2Cesium1.103.0 十六、多模型轨迹运动 Demo <template><div id"cesium-container" style"width: 100%; height: 100%;"><ul class"ul"><li v-for"(item, index) of deviceInfo" :key"index" cl…