Java算法做题中用到的-数据结构(对应C++的STL)【java中各种集合的api方法】

Java算法做题中用到的-数据结构(对应C++的STL)

    • 一、数组List
      • 初始化
        • 加入元素: add
        • 删除元素: remove(参数是角标)
        • 获取元素:get
        • indexOf() 返回指定元素下标
        • contains()
        • toArray()
      • 排序
        • 方法一:数组排序Comparator<Integer> cmp
        • 方法二:List排序 Collections.sort(arrayMap);
      • 去重 arrayMap = new ArrayList<>(new HashSet<>(arrayMap));
      • indexof的时间复杂度是 o(N)
    • 二、优先队列 PriorityQueue
    • 三、 String
    • 四、超时问题
    • 五、类排序问题(数组用arrays list用collections)
      • 1. 类自身实现 Comparable 实现comparaTo方法
      • 2. 定制排序 Comparator
      • 3. 简化Comparator
    • 六、Deque
    • 七、输入输出
    • 八、Collections
    • 九、Queue
    • 十、Set
    • 十一、Stack

一、数组List

初始化

List<Integer> list = new ArrayList<>();
加入元素: add
删除元素: remove(参数是角标)
获取元素:get
indexOf() 返回指定元素下标
contains()
toArray()

排序

方法一:数组排序Comparator cmp
// import java.util.*;class Solution {static Comparator<Integer> cmp = new Comparator<Integer>() {@Overridepublic int compare(Integer o1,Integer o2) {String s1 = o1+""+o2;String s2 = o2+""+o1;return s1.compareTo(s2);}};public String printMinNumber(int[] nums) {String res = "";Integer[] list = new Integer[nums.length];int n = nums.length;for(int i = 0; i < n; i++){list[i] = nums[i];}Arrays.sort(list,cmp);for(int i = 0; i < n; i++){res += list[i]+"";}return res;}
}
方法二:List排序 Collections.sort(arrayMap);

去重 arrayMap = new ArrayList<>(new HashSet<>(arrayMap));

indexof的时间复杂度是 o(N)

二、优先队列 PriorityQueue

peek()//返回队首元素
poll()//返回队首元素,队首元素出队列
add()//添加元素
size()//返回队列元素个数
isEmpty()//判断队列是否为空,为空返回true,不空返回false
static Comparator<Integer> cmp = new Comparator<Integer>() {public int compare(Integer e1, Integer e2) {return e2 - e1;}};
public static void main(String[] args) {//不用比较器,默认升序排列Queue<Integer> q = new PriorityQueue<>();q.add(3);q.add(2);q.add(4);while(!q.isEmpty()){System.out.print(q.poll()+" ");}/*** 输出结果* 2 3 4 *///使用自定义比较器,降序排列Queue<Integer> qq = new PriorityQueue<>(cmp);qq.add(3);qq.add(2);qq.add(4);while(!qq.isEmpty()){System.out.print(qq.poll()+" ");}/*** 输出结果* 4 3 2 */
}
PriorityQueue<Integer> queue1 = new PriorityQueue<Integer>();
queue1.add(10);
queue1.add(8);
System.out.println(queue1.poll()); // 8
PriorityQueue<Integer> queue2 = new PriorityQueue<Integer>((o1,o2) -> o1 - o2);
queue2.add(10);
queue2.add(8);
System.out.println(queue2.poll()); // 8
PriorityQueue<Integer> queue3 = new PriorityQueue<Integer>((o1,o2) -> o2 - o1);
queue3.add(10);
queue3.add(8);
System.out.println(queue3.poll()); // 10

在这里插入图片描述

三、 String

  1. cpp中的s[i] 在java中是 s.charAt(i);

四、超时问题

  1. 使用print 和 println 别用 printf
  2. 使用二分

五、类排序问题(数组用arrays list用collections)

1. 类自身实现 Comparable 实现comparaTo方法

package compare;public class Goods implements Comparable{private String name;private double price;public Goods() {}public Goods(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Goods{" +"name='" + name + '\'' +", price=" + price +'}';}//重写compareTo方法,并指明排序的方式:先按价格从低到高排序,再按名称从高到低排序@Overridepublic int compareTo(Object o) {//instanceof ,用来测试对象0是否为Goods类的实例if (o instanceof Goods){Goods goods = (Goods) o;if (this.price > goods.price){return 1;} else if (this.price < goods.price){return -1;}else {return -this.name.compareTo(goods.name);}}throw new RuntimeException("输入类型错误,无法比较");}
}

2. 定制排序 Comparator

String[] str = new String[]{"aa","kk","dd","cc"};
Arrays.sort(str, new Comparator<String>() {@Override//从大到小进行排序public int compare(String o1, String o2) {return -o1.compareTo(o2);}
});
System.out.println(Arrays.toString(str));//[kk, dd, cc, aa]

3. 简化Comparator

//Arrays.sort(range, 0, n, (o1, o2) -> o1.r - o2.r);

六、Deque

addFirst(): 向队头插入元素,如果元素为空,则发生NPE(空指针异常)
addLast(): 向队尾插入元素,如果为空,则发生NPE
offerFirst(): 向队头插入元素,如果插入成功返回true,否则返回false
offerLast(): 向队尾插入元素,如果插入成功返回true,否则返回false
removeFirst(): 返回并移除队头元素,如果该元素是null,则发生NoSuchElementException
removeLast(): 返回并移除队尾元素,如果该元素是null,则发生NoSuchElementException
pollFirst(): 返回并移除队头元素,如果队列无元素,则返回null
pollLast(): 返回并移除队尾元素,如果队列无元素,则返回null
getFirst(): 获取队头元素但不移除,如果队列无元素,则发生NoSuchElementException
getLast(): 获取队尾元素但不移除,如果队列无元素,则发生NoSuchElementException
peekFirst(): 获取队头元素但不移除,如果队列无元素,则返回null
peekLast(): 获取队尾元素但不移除,如果队列无元素,则返回null
pop(): 弹出栈中元素,也就是返回并移除队头元素,等价于removeFirst(),如果队列无元素,则发生NoSuchElementException
push(): 向栈中压入元素,也就是向队头增加元素,等价于addFirst(),如果元素为null,则发生NPE,如果栈空间受到限制,则发生IllegalStateException

七、输入输出

Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);

八、Collections

文章

九、Queue

在这里插入图片描述

十、Set

在这里插入图片描述

十一、Stack

在这里插入图片描述

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

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

相关文章

代码随想录算法训练营第三十二天 | LeetCode 122. 买卖股票的最佳时机 II、55. 跳跃游戏、45. 跳跃游戏 II

代码随想录算法训练营第三十二天 | LeetCode 122. 买卖股票的最佳时机 II、55. 跳跃游戏、45. 跳跃游戏 II 文章链接&#xff1a;买卖股票的最佳时机 II 跳跃游戏 跳跃游戏 II 视频链接&#xff1a;买卖股票的最佳时机 II 跳跃游戏 跳跃游戏 II 目…

Modeling Deep Learning Accelerator Enabled GPUs

Modeling Deep Learning Accelerator Enabled GPUs 发表在 ISPASS 2019 上。文章研究了 NVIDIA 的 Volta 和 Turing 架构中张量核的设计&#xff0c;并提出了 Volta 中张量核的架构模型。 基于 GPGPU-Sim 实现该模型&#xff0c;并且支持 CUTLASS 运行。发现其性能与硬件非常吻…

SystemVerilog Assertions应用指南 Chapter1.38在序列匹配时调用子程序

SVA可以在序列每次成功匹配时调用子程序。同一序列中定义的局部变量可以作为参数传给这些子程序。对于序列的每次匹配,子程序调用的执行与它们在序列定义中的顺序相同。 module sub;logic a, b, clk;initial $vcdpluson();initial begin clk 1b0; a1b0; b1b0; repeat(2) (pos…

如何复制禁止复制的内容

今天找到一段代码&#xff0c;但是复制时页面提示“这个是VIP会员才有的权限”。我该怎么复制呢。 现在的平台大都是用钱说话&#xff0c;以便响应知识付费的主张。对错我就不说了&#xff0c;我认为既然我有权利看到代码&#xff0c;当然也有权把他复制下来。这并不涉及侵权。…

【嵌入式-Linux】安装实时内核

原文链接&#xff1a;Docs 所有内容链接&#xff1a;博客学习目录_Howe_xixi的博客-CSDN博客 参考链接&#xff1a;Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】_fully preemptible kernel(rt)_黄小白的进阶之路的博客-CSDN博客 Ubuntu20.04编译Linux内核_zstd: n…

【wvp】wvp设备上可以开启tcp被动模式

目录 开启了 tcp被动模式 开启UDP模式 地平线不支持这种tcp情况 开启了 tcp被动模式 我的理解是zlm就会是tcp被动收流模式 tcpdump -i any host 10.1.3.7 and tcp 而wvp->浏览器&#xff0c;是SRTP,其实还是基于zlm8000的udp端口出来的 开启UDP模式 tcpdump -i any host…

【Reinforcement Learning】Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决

Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决 本文根据一篇知乎文章链接在此进行配置&#xff0c;记录在配置过程中遇到的一些问题&#xff0c;原文作者的教程很详细&#xff0c;在此对原作者表示感谢&#xff5e; 直接进行知乎原文的第2.2 有效安装过程(避坑) 2.注意上…

kamailio rtpengine模块关于via-branch的讨论

https://sr-users.sip-router.narkive.com/xRtgEcU0/rtpengine-via-branch-extra-question我查了下&#xff0c;rtpengine模块的主要作者有两个&#xff1a; - Maxim Sobolev, Sippy Software, Inc. - Juha Heinanen, TuTPro, Inc. 提问的Juha是其中之一 而回答问题的Richar…

Java计算两个日期之间的工作时长【包含节假日、补班、周末】

目的&#xff1a;用来计算两个日期之间的工作时长 说明&#xff1a;其中节假日、工作日工作时间需要从配置表中获取 直接上代码 public static void main(String[] args) throws Exception {calTime("2023-09-23 07:30:00", "2023-09-25 18:30:05");}/***…

Django viewsets 视图集与 router 路由实现评论接口开发

正常来说遵循restful风格编写接口&#xff0c;定义一个类包含了 get post delete put 四种请求方式&#xff0c;这四种请求方式是不能重复的 例如:获取单条记录和多条记录使用的方式都是get&#xff0c;如果两个都要实现的话那么得定义两个类&#xff0c;因为在同一个类中不能有…

【系统架构设计】 架构核心知识: 2 云原生架构

目录 一 云原生架构 1 云计算 2 分类 3 云计算架构 4 云原生架构设计原则

矿用升降台驱动电机调速控制系统建模与仿真

摘 要 在我们日常生活中&#xff0c;无刷直流电机随处可见&#xff0c;因为其相比其他电机而言结构相对简单&#xff0c;运行稳定且便于维修等优势&#xff0c;最重要的是直流电机在调速方面具有很好的优势。随着自动控制技术和微电子技术的不断革新&#xff0c;目前的技术水平…

【rust/树莓派】使用rppalembedded-graphics控制st7789 LCD屏幕

说在前面 树莓派版本&#xff1a;4bLCD模块&#xff1a;ST7789V2 240*280 LCD树莓派系统&#xff1a;Linux raspberrypi 5.15.76-v8 #1597 SMP aarch64 GNU/Linuxrust版本&#xff1a;rustc 1.73.0 模块详情 某雪的1.69inch LCD模块&#xff0c;包含杜邦线 准备工作 树莓派…

Camera2开发基础知识篇——手机影像参数

1. 2、对焦 对焦指相机将图像清晰聚焦的过程。自动对焦功能可自动调整焦点&#xff0c;确保主体清晰锐利。手动对焦功能允许用户手动选择焦点。 3、焦距 简单理解就是指镜头的视角和放大倍数。实际到物理设备&#xff0c;焦距就是从镜片光学中心到底片、CCD或CMOS等成像平面…

如何有效取代FTP来帮助企业快速传输大文件

在互联网的发展历史上&#xff0c;FTP是一种具有里程碑意义的协议&#xff0c;它最早出现在1971年&#xff0c;是实现网络上文件传输的基础。FTP的优点是简单、稳定、兼容性强&#xff0c;可以在不同的操作系统和平台之间进行文件交换。然而&#xff0c;时代在进步&#xff0c;…

【C语言】指针错题(类型分析)

题目&#xff1a; #include <stdio.h> int main () {int*p NULL;int arr[10] {0}; return 0; } 选项&#xff1a; A、p arr ; B、 int (* ptr )[10]& arr ; C、 p & arr [ 0 ]; D、 p & arr ; 解析&#xff1a; 1、 p 是一个指针变量&#xff0c;指…

vue3使用QuillEditor

1.安装 npm install vueup/vue-quillalpha --save 2.引入 全局引入 import { QuillEditor } from vueup/vue-quill; import vueup/vue-quill/dist/vue-quill.snow.css; app.component(QuillEditor, QuillEditor); 部分引入 import { QuillEditor } from vueup/vue-quill im…

【机器学习】模型平移不变性/等变性归纳偏置Attention机制

Alphafold2具有旋转不变性吗——从图像识别到蛋白结构预测的旋转对称性实现 通过Alphafold2如何预测蛋白质结构&#xff0c;看有哪些机制或tricks可以利用&#xff1f; 一、等变Transformer 等变Transformer是Transformer众多变体的其中一种&#xff0c;其强调等变性。不变性…

Vue非单文件组件

组件就是用来实现局部特定功能效果的代码集合&#xff0c;为的就是复用编码&#xff0c;简化项目编码&#xff0c;提高运行效率。 组件分为非单文件组件和单文件组件&#xff0c;这里介绍的是非单文件组件。 一、创建组件 创建组件的语法格式如下&#xff1a; const 组件名 …

Centos 7 部署Docker CE和docker-compose教程

一、Docker CE 1、Docker CE 安装 ①、安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2②、设置yum源 # 官方源&#xff08;二选一&#xff09; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 阿里源…