【刷题】数据结构——Java常见数据结构

news2024/9/19 8:01:22

文章目录

  • 变长数组:List
  • 字符串:string
  • 队列:
    • queue 普通队列
    • PriorityQueue 优先队列
    • map

变长数组:List

int[] nums;
// 普通数组转为对象数组
Integer[] integerArray = Arrays.stream(nums) // 创建流
          .boxed() // 装箱 int -> Integer
          .toArray(Integer[]::new); // 转换为 Integer[]
// 转为List,注意这样得到的是不可变的list,即list无法add sort
List<Integer> list = Arrays.stream(nums).boxed().toList();
// 这样得到的才是可变的
List<Integer> list = new ArrayList<>(Arrays.stream(nums).boxed().toList());
// 少量数据可以这样转
List<Integer> list = Arrays.asList(nums[0], nums[1], nums[2]);

字符串:string

String str = "123/456/789";
String[] strs = str.split("/");	// 根据符号切分成数组
for (String s : strs) {
    System.out.println(s);
}

str = str.replace("123", "233");  // 123替换成233,注意要返回
System.out.println(str);

str = str.substring(1, 3);  // 获取子字符串,下标从[1, 3)
System.out.println(str);

队列:

queue 普通队列

static Queue<Integer> queue = new LinkedList<>();

queue.size(); // 返回元素个数 时间O(1)
queue.isEmpty(); // a为空返回true 时间O(1)
queue.add(1); // 向队头插入,错误抛异常
queue.offer(1); // 向队头插入,不抛异常
int h1 = queue.poll(); // 返回第一个元素,并在队列中删除
int h2 = queue.element(); // 返回第一个元素,不删除
for(Integer q : queue){
    System.out.println(q);
}

PriorityQueue 优先队列

用堆实现

// 初始大小11,默认小根堆,堆顶是最小的
static PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(100);
public void work() {
    // 压入元素,add和offer在java 17中一样
    priorityQueue.add(3);
    priorityQueue.add(2);
    priorityQueue.offer(1);
    // [1, 3, 2]
    System.out.println(priorityQueue);

    // 堆顶
    System.out.println(priorityQueue.peek());

    // 删除指定元素
    priorityQueue.remove(2);
    System.out.println(priorityQueue);

    // 弹出堆顶
    priorityQueue.poll();
    System.out.println(priorityQueue);

    // 遍历堆
    Iterator<Integer> iterate = priorityQueue.iterator();
    while(iterate.hasNext()) {
        System.out.print(iterate.next());
        System.out.print(", ");
    }
    System.out.println();

    // 堆大小
    System.out.println(priorityQueue.size());
    // 判断是否为空
    System.out.println(priorityQueue.isEmpty());
    // 查找是否在堆中
    System.out.println(priorityQueue.contains(3));

    // 小根堆改成大根堆
    // 比较器返回值:<0代表o1排前面;>0代表o2排前面;=0代表相等
    // 返回值o2-o1,<0代表o2<o1时o1排前面;>0代表o2>o1时o1排前面;从而实现大根堆
    priorityQueue = new PriorityQueue<>((o1, o2) -> o2 - o1);
    priorityQueue.add(3);
    priorityQueue.add(2);
    priorityQueue.offer(1);
    System.out.println(priorityQueue);
}

map

    static Map<Integer, Integer> map = new HashMap<>();
    
    map.put(1, 2);
    map.put(3, 4);
    map.put(5, 6);
    // {1=2, 3=4, 5=6}
    System.out.println(map);

    // 访问元素
    map.get(3);
    map.getOrDefault(-1, 1);	// 如果get的key -1不存在,则返回默认值1

    // 删除元素
    map.remove(5);
    System.out.println(map);

    // 判断是否包含key
    System.out.println(map.containsKey(3));
    // 判断是否包含value
    System.out.println(map.containsValue(2));

    // 输出 key
    for (Integer i : map.keySet()) {
        System.out.println("key: " + i);
    }
    // 输出 value
    for(Integer value: map.values()) {
        // 输出每一个value
        System.out.print(value + ", ");
    }
    // 输出 key 和value
    for(Map.Entry<Integer, Integer> entry: map.entrySet()) {
        // 输出每一个entry
        System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
    }
    map.forEach((k, v) -> {
    	System.out.println(k + " " + v);
    });

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

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

相关文章

【C++】——list

文章目录 list介绍和使用list注意事项 list模拟实现list和vector的不同 list介绍和使用 在C中&#xff0c;list是一个带头双向链表 list注意事项 迭代器失效 删除元素&#xff1a;当使用迭代器删除一个元素时&#xff0c;指向该元素的迭代器会失效&#xff0c;但是不会影响其他…

订单防重复提交:token 发放以及校验

订单防重复提交&#xff1a;token 发放以及校验 1. 基于Token校验避免订单重复提交 1. 基于Token校验避免订单重复提交 在很多秒杀场景中&#xff0c;用户为了能下单成功&#xff0c;会频繁的点击下单按钮&#xff0c;这时候如果没有做好控制的话&#xff0c;就可能会给一个用…

ElementUI 布局——行与列的灵活运用

ElementUI 布局——行与列的灵活运用 一 . 使用 Layout 组件1.1 注册路由1.2 使用 Layout 组件 二 . 行属性2.1 栅格的间隔2.2 自定义元素标签 三 . 列属性3.1 列的偏移3.2 列的移动 在现代网页设计中&#xff0c;布局是构建用户界面的基石。Element UI 框架通过其强大的 <e…

面向对象程序设计之继承(C++)

1.继承的定义 1.1继承的概念 继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段&#xff0c;它允许我们在保持原有类特性的基础上进⾏扩展&#xff0c;增加⽅法(成员函数)和属性(成员变量)&#xff0c;这样产⽣新的类&#xff0c;称派⽣类。继承 呈现了⾯向…

Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 参考书目&#xff1a; 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…

Delphi CxGrid的主从表显示设置

界面编辑建立两个不同级别的视图层级-Layout 其实这是一个主从表关系&#xff0c; 1&#xff1a;填好主表的keyfieldnames 2&#xff1a;填好从表的keyfieldnames 3&#xff1a;填好从表的 detaikeyfieldNames与masterkeyfieldnames 4: 从表的数据源一定要按与主表关联的…

Vue实用操作-2-如何使用网页开发者工具

第一步&#xff0c;添加扩展&#xff0c;live服务器 第二步&#xff0c;将 favicon.ico 文件加入到根目录下 第三步&#xff0c;选择以服务器方式运行&#xff0c;并打开浏览器 第四步&#xff0c;在极简插件你中找到 vue 对应插件&#xff0c;安装到扩展插件中 第五步&#xf…

通过hosts.allow和hosts.deny限制用户登录

1、Hosts.allow和host.deny说明 两个文件是控制远程访问设置的&#xff0c;通过设置这个文件可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。如果请求访问的主机名或IP不包含在/etc/hosts.allow中&#xff0c;那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机…

【南方科技大学】CS315 Computer Security 【Lab2 Buffer Overflow】

目录 引言软件要求启动虚拟机环境设置禁用地址空间布局随机化&#xff08;ASLR&#xff09;设置编译器标志以禁用安全功能 概述BOF.ctestShellCode.c解释 createBadfile.c 开始利用漏洞在堆栈上查找返回地址 实验2的作业 之前有写过一个 博客&#xff0c;大家可以先看看栈溢出…

Qt ORM模块使用说明

附源码&#xff1a;QxOrm是一个C库资源-CSDN文库 使用说明 把QyOrm文件夹拷贝到自己的工程项目下, 在自己项目里的Pro文件里添加include($$PWD/QyOrm/QyOrm.pri)就能使用了 示例test_qyorm.h写了表的定义,Test_QyOrm_Main.cpp中写了所有支持的功能的例子: 通过自动表单添加…

C++——异常处理机制(try/catch/throw)

一、什么是异常处理机制 C++中的异常处理机制是一种用来检测和处理程序执行期间可能存在的异常情况的技术。它允许开发者编写健壮的代码,能够提前预判和处理程序执行可能会出现的错误,保证程序正常执行,而不会导致程序崩溃。 C++异常处理主要由几个关键字组成: try、cat…

C++笔记之std::map的实用操作

C++笔记之std::map的实用操作 code review 文章目录 C++笔记之std::map的实用操作1.初始化1.1.使用列表初始化1.2.使用 `insert` 方法1.3.使用 `emplace` 方法1.4.复制构造1.5.移动构造2.赋值2.1.列表赋值2.2.插入元素2.3.批量插入3.取值3.1.使用 `[]` 操作符3.2.使用 `at()` …

Vue路由配置、网络请求访问框架项目、element组件介绍学习

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程&#xff1a;封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

回归预测|基于开普勒优化相关向量机的数据回归预测Matlab程序KOA-RVM 多特征输入单输出 含基础RVM

回归预测|基于开普勒优化相关向量机的数据回归预测Matlab程序KOA-RVM 多特征输入单输出 含基础RVM 文章目录 一、基本原理1. **相关向量机&#xff08;RVM&#xff09;**2. **开普勒优化算法&#xff08;KOA&#xff09;**3. **KOA-RVM回归预测模型**总结 二、实验结果三、核心…

k8s集群备份与迁移

什么是 Velero? Velero 是一个用Go语言开发的开源工具&#xff0c;用于 Kubernetes 集群的备份、恢复、灾难恢复和迁移。 Velero备份工作流程 当用户发起velero backup create时&#xff0c;会执行如下四个动作&#xff1a; velero客户端调用Kubernetes API创建自定义资源并…

启动windows更新/停止windows更新,在配置更新中关闭自动更新的方法

在Windows操作系统中&#xff0c;启动或停止Windows更新&#xff0c;以及调整“配置更新”的关闭方法&#xff0c;涉及多种途径&#xff0c;这里将详细阐述几种常用的专业方法。 启动Windows更新 1.通过Windows服务管理器&#xff1a; -打开“运行”对话框&#xff08;…

15. 三数之和(实际是双指针类型的题目)

15. 三数之和 15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以…

Uniapp的alertDialog返回值+async/await处理确定/取消问题

今天在使用uniui的alertDialog时&#xff0c;想添加一个确定/取消的警告框时 发现alertDialog和下面的处理同步进行了&#xff0c;没有等待alaertDialog处理完才进行 查询后发现问题在于 await 关键字虽然被用来等待 alertDialog.value.open() 的完成&#xff0c;但是 alertDi…

Android中的冷启动,热启动和温启动

在App启动方式中分为三种&#xff1a;冷启动&#xff08;cold start&#xff09;、热启动&#xff08;hot start&#xff09;、温启动&#xff08;warm start&#xff09; 冷启动&#xff1a; 系统不存在App进程&#xff08;App首次启动或者App被完全杀死&#xff09;时启动A…

使用 GaLore 预训练LLaMA-7B

项目代码&#xff1a; https://github.com/jiaweizzhao/galorehttps://github.com/jiaweizzhao/galore 参考博客&#xff1a; https://zhuanlan.zhihu.com/p/686686751 创建环境 基础环境配置如下&#xff1a; 操作系统: CentOS 7CPUs: 单个节点具有 1TB 内存的 Intel CP…