Java对应C++ STL的用法

sort:

1:java.util.Arrays中的静态方法Arrays.sort()方法,针对基本数据类型和引用对象类型的数组元素排序

2:java.util.Collections中的静态方法的Collections.sort()方法,针对集合框架中的动态数组,链表,树,哈希表等( ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap )进行排序。下面分别介绍两种用法。

Collections.sort(list,new Comparator<Integer>(){//升序排序public int compare(Integer str1,Integer str2){String s1=str1+""+str2;String s2=str2+""+str1;return s1.compareTo(s2);//变成-s1.compareTo(s2)就是降序排序了}
});

reverse:

对于集合,使用Collections.reverse()

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Collections.reverse(list);

对于字符串,使用StringBuilder.reverse()

String str = "Hello, World!";
StringBuilder reversedStr = new StringBuilder(str).reverse();
ArrayList:

对应于C++的vector容器

#等价于vector<int>vec[maxn]
private final int maxn=(int)2e5+5
ArrayList<Integer>list=new ArrayList[maxn]将元素插入到指定位置的 arraylist 中
public boolean add(E e)从集合中获取元素,参数是索引编号,返回值就是对应位置的元素
public E get(int index)从集合中删除元素,参数是索引编号,返回值就是被删除的元素
public E remove(int index)获取集合的尺寸长度,返回值是集合中包含的元素个数
public int size()

Stack和Queue容器:

Stack:

import java.util.Stack;
public class StackExample {public static void main(String[] args) {Stack<Integer> stack = new Stack<>();// 添加元素stack.push(1);// 查看栈顶元素int top = stack.peek();// 移除栈顶元素int popped = stack.pop();}
}

Stack 的基本操作

  • push(E item):将元素压入栈顶。
  • pop():移除并返回栈顶元素。
  • peek():返回栈顶元素,但不移除。
  • isEmpty():检查栈是否为空。

Queue:Queue在Java中是一个接口,它的实现类有PriorityQueue和LinkedList,LinkedList即为C++种的Queue

import java.util.LinkedList;
import java.util.Queue;public class QueueExample {public static void main(String[] args) {Queue<Integer> queue = new LinkedList<>();// 添加元素queue.add(1);// 查看队首元素int front = queue.peek();// 移除队首元素int removed = queue.poll();// 检查队列是否为空boolean isEmpty = queue.isEmpty();}
}

Queue 的基本操作

  • add(E e):将元素添加到队列尾部。
  • poll():移除并返回队首元素,如果队列为空则返回 null
  • peek():返回队首元素,但不移除,如果队列为空则返回 null
  • isEmpty():检查队列是否为空。

TreeSet容器:

TreeSet即对应C++中的set:

Integer[]nums={1,2,3,4,5};
ArrayList<Integer>list=new ArrayList<>(List.of(nums));
Collections.addAll(list,4,5,6);
TreeSet<Integer> s = new TreeSet<>(list);
// 遍历集合中的所有元素
Iterator<Integer> it = s.iterator();
while (it.hasNext()) {Integer element = it.next();if (it.hasNext()) {System.out.print(element + " ");} else {System.out.print(element);}
}
  • contains(Object o):检查集合中是否包含指定元素。
  • first()last():获取集合中的第一个和最后一个元素。
  • ceiling(E e)floor(E e):分别返回大于或等于给定元素的最小元素和小于或等于给定元素的最大元素。
  • higher(E e)lower(E e):分别返回严格大于和严格小于给定元素的最小和最大元素。
  • boolean remove(Object o)从集合中删除指定的元素 o,如果删除成功则返回 true

Multiset容器:

Java中没有直接与C++的Multiset对应的容器,不过可以用TreeMap模拟实现,以leetcode该题为例 480. 滑动窗口中位数

class Solution {public double[] medianSlidingWindow(int[] nums, int k) {int n = nums.length;double[] ans = new double[n-k+1];Set<int[]> set = new TreeSet<>((a, b)->a[0]==b[0] ? Integer.compare(a[1], b[1]) : Integer.compare(a[0], b[0]));for(int i=0; i<k; i++) set.add(new int[]{nums[i], i});        for(int i=k, j=0; i<n; i++, j++){ans[j] = findMid(set);set.add(new int[]{nums[i], i});set.remove(new int[]{nums[i-k], i-k});}    ans[n-k] = findMid(set);return ans;}double findMid(Set<int[]> set){int mid = (set.size() - 1) / 2;var it = set.iterator();while(mid-->0) it.next();return set.size()%2 == 0 ? ((double)it.next()[0] + it.next()[0]) / 2 : it.next()[0];} 
}

TreeMap: 

等价于C++的map

HashMap:

等价于c++的unordered_map

pair和tuple:

lower_bound/upper_bound:

priority_queue:

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

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

相关文章

iOS17系统适配

iOS17 新功能 文章目录 iOS17 新功能iOS17支持哪几款机型Xcode15新特性iOS17-开发适配指南 横屏待机 在iOS 17中&#xff0c;还带来了横屏待机功能&#xff0c;苹果将这个新功能命名为“Standby”模式&#xff0c;为 iPhone 带来了全新的玩法。iPhone启用之后&#xff0c;默认情…

1-Pandas是什么

Pandas是什么 Pandas 是一个开源的第三方 Python 库&#xff0c;从 Numpy 和 Matplotlib 的基础上构建而来&#xff0c;享有数据分析“三剑客之一”的盛名&#xff08;NumPy、Matplotlib、Pandas&#xff09;。Pandas 已经成为 Python 数据分析的必备高级工具&#xff0c;它的…

PyTorch Tensor进阶操作指南(二):深度学习中的关键技巧

本文主要讲tensor的裁剪、索引、降维和增维 Tensor与numpy互转、Tensor运算等&#xff0c;请看这篇文章 目录 9.1、首先看torch.squeeze()函数&#xff1a; 示例9.1&#xff1a;&#xff08;基本的使用&#xff09; 小技巧1&#xff1a;如何看维数 示例9.2&#xff1a;&a…

安全架构概述_1.信息安全面临的威胁

在当今以计算机、网络和软件为载体的数字化服务几乎成为人类赖以生存的手段。与之而来的计算机犯罪呈现指数上升趋势&#xff0c;因此&#xff0c;信息的可用性、完整性、机密性、可控性和不可抵赖性等安全保障显得尤为重要&#xff0c;而满足这些诉求&#xff0c;离不开好的安…

Vulnhub-AdmX

主机发现 靶机 &#xff1a; 192.168.145.131131 这台主机 存活 端口扫描 nmap -sV -O -p 1-65535 192.168.145.131 存在 80 端口 &#xff0c;这里连ssh 端口都没了 80 端口存在 Apache httpd 2.4.1 存在 Apache 默认页面 像这种页面 &#xff0c;没有什么具体的价值 扫描一…

嵌入式Linux系统编程 — 4.6 atoi、strtol等函数实现字符串与数字转换

目录 1 字符串转整形数据 1.1 函数功能 1.2 示例程序 2 字符串转浮点型数据 2.1 函数介绍 2.2 示例程序 3 数字转字符串 3.1 函数介绍 3.2 函数原型 在编程中&#xff0c;经常会需要将数字组成的字符串转换为相应的数字、或者将数字转换为字符串&#xff0c;在 C 函数…

连环计 | 第6集 | 百姓有倒悬之危,君臣有累卵之急 | 貂蝉 | 三国演义 | 逐鹿群雄

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;这篇博客分享的是《三国演义》文学剧本第Ⅰ部分《群雄逐鹿》的第6️⃣集《连环计》的经典语句和文学剧本全集台词 文章目录 1.经典语句2.文学剧本台词 …

LabVIEW材料样本结构缺陷检测

本文介绍了一种基于LabVIEW的实验室振动特性分析测试装置&#xff0c;通过分析振动特性来检测结构缺陷。文章详细描述了具体案例、硬件型号、工作原理、软件功能以及注意事项。 硬件型号 振动传感器&#xff1a;PCB Piezotronics 352C33加速度计 数据采集卡&#xff1a;NI PXI…

python(基础语法,pandas,numpy,正则表达式,数据预处理)

python学习推荐网址&#xff1a; 白月黑羽 一、语法基础 目标&#xff1a; • list、tuple、set、dict的基本用法 • 内置函数 len&#xff08;&#xff09;&#xff0c; eval&#xff08;&#xff09;&#xff0c;range&#xff08;&#xff09;&#xff0c;sort&#xff08;…

Linux自动化交互脚本expect开发

在日常开发任务中&#xff0c;运行shell脚本有时候会提示输入密码的操作&#xff0c;如何让脚本自动输入密码呢&#xff1f;这时使用expect帮我们输入&#xff0c;Expect是基于Tcl发展而来的&#xff0c;它不仅可以进行交互&#xff0c;还可以根据程序的提示模拟标准输入&#…

西安高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

随着工业4.0时代的到来&#xff0c;智能制造成为推动制造业转型升级的关键。为了培养学生的创新能力和实践能力&#xff0c;西安高校大学决定建设智能制造实验室&#xff0c;并引入数字孪生技术&#xff0c;构建可视化系统平台。项目旨在通过数字孪生技术&#xff0c;实现对制造…

微信小程序毕业设计-线上教育商城系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

刷代码随想录有感(120):贪心算法——买卖股票的最佳时机

题干&#xff1a; 代码&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int low INT_MAX;int res INT_MIN;for(int i 0; i < prices.size(); i){low min(low, prices[i]);res max(res, prices[i] - low);}return res;} }; 贪心…

ARCGIS添加在线地图

地图服务地址&#xff1a;http://map.geoq.cn/ArcGIS/rest/services 具体方法&#xff1a; 结果展示&#xff1a;

T4打卡 学习笔记

所用环境 ● 语言环境&#xff1a;Python3.11 ● 编译器&#xff1a;jupyter notebook ● 深度学习框架&#xff1a;TensorFlow2.16.1 ● 显卡&#xff08;GPU&#xff09;&#xff1a;NVIDIA GeForce RTX 2070 设置GPU from tensorflow import keras from tensorflow.keras…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的字符串拼接游戏(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

GO sync包——读写锁

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

多表查询实训

前提 本篇博客&#xff0c;我将通过讲解例题的方式&#xff0c;带大家进一步掌握多表查询的使用规则和使用技巧 正文 前提 先建好表 表1 salgrade (薪资等级表&#xff09; 表2 emp(员工信息表&#xff09; 表3 dept&#xff08;部门信息表&#xff09;&#xff0c;插入相…

docker-mysql主从复制

MySQL主从复制 安装docker和拉取镜像不再赘述 一.主服务器 1.新建主服务器容器-3307 &#xff08;这里设置的密码可能不生效&#xff0c;若未生效请看问题中的2&#xff09; docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \…

第三十七篇——麦克斯韦的妖:为什么要保持系统的开放性?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 如果没有详细的学习这篇文章&#xff0c;我觉得我就是被麦克斯韦妖摆弄的…