Java核心技术知识点笔记—集合(二)
1、树集(TreeSet):是一个有序集合(sorted collection),与散列集类似,但比散列集有所改进。
(1)可以以任意顺序将元素插入到集合中;
(2)遍历时,每个值将自动按照排序后的顺序呈现;例如:
TreeSet<String> treeSet = new TreeSet<>();treeSet.add("B");treeSet.add("A");treeSet.add("C");for (String s : treeSet) {System.out.print(s);System.out.print(",");}}
输出:A,B,C,
(3)排序使用的是树结构(当前使用的是红黑树(red-black tree)),每次插入一个元素,元素都被放置在正确的排序位置上;
(4)迭代器总是以排好序的顺序访问每个元素;
(5)将元素添加到树中比添加到列表中慢,但与检查数组或链表中的重复元素比快很多;
(6)树的排序必须是全序,即任意两个元素必须是可比的,且只有当两个元素相等时结果才为0;
(7)Java SE 6起,TreeSet类实现了NavigableSet接口,这个接口增加了几个便于定位元素以及方向遍历的方法。
2、队列与双端队列:
2.1、双端队列:有两个端头的队列,可以有效地在头部和尾部同时添加或删除元素,不支持在队列中间添加元素。
(1)Java SE 6 中引入Deque接口,并由ArrayDeque和LinkedList实现。这两个类都提供了双端队列,并且可在必要时增加队列长度。
2.2、优先级队列(priority queue):可按照任意顺序插入元素,但总按照排序的顺序进行检索。
(1)并没有对所有的元素进行排序;
(2)使用的数据结构称为堆(heap);
(3)堆是一个可以自我调整的二叉树,对树执行添加和删除操作,可以让最小的元素移动到根,而不必花费时间对元素排序;
(4)典型示例:任务调度。每个任务有一个优先级,任务以随机顺序添加到队列中。每当启动一个新任务,都将优先级最高的任务从队列中删除(由于习惯上将1设为“最高”优先级,所以会删除最小的元素)。
3、映射:存放键/值对,提供键就能查找到值。Java中提供了两个通用的实现:HashMap和TreeMap。
3.1、基本操作
(1)散列或比较函数只能作用于键,与键关联的值不能进行散列或比较。
(2)与集一样,散列稍微快一点。如果不需要按照排列顺序访问键,最好选择散列。
(3)往映射添加对象时(put方法),必须提供一个键。
(4)检索对象(get)必须使用键。如果映射中没有与给定键对应的信息,get将返回null(getOrDefault方法可以让调用者自己提供一个默认值,如果检索没有结果,则返回提供的默认值)。
(5)键必须是唯一的。不能对同一个键存放两个在值。重复对同一个键调用put方法,后面的值会覆盖前面的值。
(6)要迭代处理映射的键和值,最简单的方式是使用forEach方法,提供一个接受键和值的lambda表达式。
(7)remove方法删除映射中给定键对应的元素;
(8)size方法返回映射中的元素数目。
3.2、三种映射视图:键集(Set<K> keySet())、值集合(Collections<V> values(),不是一个集)、键/值对集(Set<Map.Entry<K, V>> entrySet())。
(1)keySet()不是HashSet或TreeSet,而是实现了Set接口的某个类的对象,扩展了Collection接口,可以像使用集合一样使用。例如:
枚举一个映射的所有键:
Set<String> keySet = map.keySet();for (String key : keySet) {System.out.println(key);}
(2)在键集视图上调用迭代器的remove方法,实际会删除映射中这个键以及与它关联的值;
(3)不能向键集视图增加元素。试图调用add方法会抛出UnsupportedOperationException。
(4)通过枚举键/值对集来同时查看键和值:
for (Map.Entry<String, String> entry : map.entrySet()) {System.out.println("key: " + entry.getKey());System.out.println("value:" + entry.getValue());}相关文章:
Java核心技术知识点笔记—集合(二)
1、树集(TreeSet):是一个有序集合(sorted collection),与散列集类似,但比散列集有所改进。 (1)可以以任意顺序将元素插入到集合中; (2ÿ…...
Sharepoint Online手工迁移方案 | 分享二
目录 前言 1.创建新的目标网站集合 2.备份旧网站集合的内容数据库 3.卸载旧网站集合...
MVC获取当前区域、控制器、Action
控制器中获取: 获取区域名称:RouteData.DataTokens["area"].ToString() 获取控制器名称:RouteData.Values["controller"].ToString() 获取Action名称:RouteData.Values["action"].ToString() 视…...
第十六章 脚手架文件介绍
react项目脚手架文件目录 public ---- 静态资源文件夹 |-------favicon.icon ------ 网站页签图标 |-------index.html -------- 主页面 |-------logo192.png ------- logo图 |-------logo512.png ------- logo图 |-------manifest.json ----- 应用加壳的配置文件 |-------rob…...
基于Clion开发(stm32移植FreeRTOS+LVGL)
嵌入式单片机开发中,通常使用 Keil IAR 或 芯片厂商提供的IDE,这类IDE界面风格还停留在十几年前XP风,代码编辑实在让人难受,所以很多时候笔者都是采用VSCode编辑,然后再用这类IDE下载调试使用,另外像keil 和…...
Python | 蓝桥杯进阶第三卷——动态规划
欢迎交流学习~~ 专栏: 蓝桥杯Python组刷题日寄 蓝桥杯进阶系列: 🏆 Python | 蓝桥杯进阶第一卷——字符串 🔎 Python | 蓝桥杯进阶第二卷——贪心 💝 Python | 蓝桥杯进阶第三卷——动态规划 ✈️ Python | 蓝桥杯进阶…...
蓝桥杯31天真题冲刺|题解报告|第二十九天
大家好,我是snippet,今天是我们刷题的第二十九天,今天主打打比赛,牛客AcWing力扣,今天的牛客是真的有趣,下面是我今天AcWing周赛的题解 目录 一、热身计算 题目链接:4944. 热身计算 - AcWing题…...
[Rust GUI]fltk-rs的helloworld
1、安装VSCode 下载安装VSCode 安装VSCode扩展 rust-analyzer或rust-analyzer(CN) 2、安装Microsoft C 生成工具 访问微软官网下载生成工具,勾选使用 C 的桌面开发之后会自动勾选5个项目 取消勾选以下项目 用于 Windows 的 C CMake 工具 测试工具核心功能 - 生成…...
蓝桥杯真题05
重新排序 问题描述 给定一个数组 A 和一些查询 Li,Ri 求数组中第 Li 至第 Ri个元素之和。 小蓝觉得这个问题很无聊, 于是他想重新排列一下数组, 使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组, 所有查询结果的总和最多可以增加多少? 输入格式 输入第一行包含…...
PMP那些事儿,备考小白看过来
一、PMP是什么? PMP指的是项目管理专业人士资格认证。它是由美国项目管理协会(Project Management Institute(PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试。 其目的是为了给项目管理人员提供统一的行业标准。目前࿰…...
【数据分析实战】基于python对酒店预订需求进行分析
文章目录📚引言📖数据加载以及基本观察📑缺失值观察及处理🔖缺失值观察以及可视化🔖缺失值处理📖用户数据探索📑什么时间预定酒店将会更经济实惠?📑哪个月份的酒店预订是…...
【新2023Q2模拟题JAVA】华为OD机试 - 数组的中心位置
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:数组的中心位置 题目 给你一…...
Vue的props组件详解
const props defineProps({name: String, }); String 是在 defineProps() 函数中用来声明 name prop 的类型,表示 name 必须是字符串类型。如果父组件没有传入 name 或传入的 name 不是字符串类型,那么就会产生类型验证错误。 defineProps() 函数支持…...
抽烟行为识别预警系统 yolov5
抽烟行为识别预警系统基于yolov5网络模型智能分析技术,抽烟行为识别预警算法通过监测现场人员抽烟行为自动存档进行报警提示。我们选择当下YOLO卷积神经网络YOLOv5来进行抽烟识别检测。6月9日,Ultralytics公司开源了YOLOv5,离上一次YOLOv4发布…...
【0基础学爬虫】爬虫基础之文件存储
大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…...
airflow源码分析-任务调度器实现分析
Airflow源码分析-任务调度器实现分析 概述 本文介绍Airflow执行器的总体实现流程。通过函数调用的方式说明了Airflow scheduler的实现原理,对整个调度过程的源码进行了分析。 通过本文,可以基本把握住Airflow的调度器的运行原理主线。 启动调度器 可…...
一文学会数组的reduce()和reduceRight()
reduce()方法和reduceRight()方法依次处理数组的每个成员,最终累计为一个值。 它们的差别是,reduce()是从左到右处理,reduceRight()则是从右到左,其他完全一样。 [1, 2, 3, 4, 5].reduce(function (a, b) {console.log(a, b);ret…...
登录校验-Filter
上一篇介绍完了基础应用和细节,现在来完成登录校验功能基本流程: 要进入后台管理系统,必须完成登录操作,此时就需要访问登录接口Login。登录成功服务端会生成一个JWT令牌,并且返回给前端,前端会将JWT令牌存…...
C C++ Java python 分别写出不同表白girlfriend的爱心动态代码实现
C `` #include <stdio.h> #include <stdlib.h> #include <windows.h> void heart_animation() {int i, j, k; for (i = 1; i <= 6; i++) {for (j = -3; j <= 3; j++) {for (k = -4; k <= 4; k++) {if (abs(j) + abs(k) < i * 2) {printf(“I”)…...
ThreeJS-投影、投影模糊(十七)
无投影: 完整的代码: <template> <div id"three_div"></div> </template> <script> import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/Or…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
