当前位置: 首页 > news >正文

Java算法常用技巧

一、排序

资料:https://blog.csdn.net/weixin_72499901/article/details/136592073

正排序

import java.util.Arrays;public class SortArray {public static void main(String[] args) {int[] citations = {5, 3, 8, 2, 1, 4};// 打印原数组System.out.println("原数组: " + Arrays.toString(citations));// 使用 Arrays.sort() 进行排序Arrays.sort(citations);// 打印排序后的数组System.out.println("排序后的数组: " + Arrays.toString(citations));}
}

降序排序

这个只能处理包装,处理Integer,不能处理int

public static void main(String[] args) {Integer[] citations = {5, 3, 8, 2, 1, 4};// 打印原数组System.out.println("原数组: " + Arrays.toString(citations));// 使用 Arrays.sort() 进行降序排序Arrays.sort(citations, Collections.reverseOrder());// 打印排序后的数组System.out.println("排序后的数组: " + Arrays.toString(citations));}

处理数组

Integer[] arr = {5,4,7,9,2,12,54,21,1};//降序Arrays.sort(arr, new Comparator<Integer>() {//重写compare方法,最好加注解,不加也没事public int compare(Integer a, Integer b) {//返回值>0交换return b-a;}});

二、初始化

自己对于列表,数组的初始化还是不太熟悉

1. 数组的初始化

int[] a = {1,2,3,4};

2. Java List的初始化

用数组初始化List

 Integer [] a = {1,2,34};List<Integer> list = Arrays.asList(a);list.stream().forEach(System.out::println);

直接初始化

 List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4));list.stream().forEach(System.out::println);
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5);

数组增加在指定位置

List<Integer> list= new LinkedList<>(Arrays.asList(1,3,4));list.add(2,5);list.stream().forEach(System.out::println);

在这里插入图片描述

3. 数组转为List

citations 是int数组

List<Integer> citationList = IntStream.of(citations).boxed().toList();

Java stream语法

 int[][] intervals = {{1, 3},{2, 4},{5, 7},{6, 8}};Arrays.stream(intervals).skip(2).limit(2).forEach(a -> System.out.println(a[0] +" "+ a[1]));

skip 就是跳过前两个,limit 表示只输出两个,所以输出的是
在这里插入图片描述

数据结构

1. queue

Queue<String> queue = new LinkedList<String>();
//添加元素
queue.offer("a");
queue.poll() // 删除并返回
queue.peek()//只返回

在这里插入图片描述
https://www.liaoxuefeng.com/wiki/1252599548343744/1265121791832960
https://www.runoob.com/java/data-queue.html

2. stack

压入元素 (push):
弹出元素 (pop):从栈顶移除并返回元素。
查看栈顶元素 (peek):查看栈顶元素但不移除它。
查找元素 (search):

import java.util.Stack;public class StackExample {public static void main(String[] args) {// 创建一个 StackStack<Integer> stack = new Stack<>();// 压入元素stack.push(10);stack.push(20);stack.push(30);System.out.println("Stack after pushing: " + stack);// 查看栈顶元素System.out.println("Top element is: " + stack.peek());// 弹出元素System.out.println("Popped element: " + stack.pop());System.out.println("Stack after popping: " + stack);// 查找元素int position = stack.search(10);if (position != -1) {System.out.println("Element 10 found at position: " + position);} else {System.out.println("Element 10 not found.");}// 检查是否为空System.out.println("Is stack empty? " + stack.isEmpty());}
}

stack 转化list
List list = stack.stream().toList();

stack 循环

 Iterator<Integer> iterator = stack.iterator();while (iterator.hasNext()) {System.out.print(iterator.next() + " ");}

相关文章:

  • web前端之vue一键部署的shell脚本和它的点.bat文件、海螺AI、ChatGPT
  • 基于PHP的草莓种植信息管理系统
  • SpringCloud学习笔记 - 1、Boot和Cloud版本选型
  • 代码规范性思考
  • 硬件开发笔记(十八):核心板与底板之间的连接方式介绍说明:板对板连接器
  • 微服务feign组件学习
  • 嵌入式技术学习——c51单片机——蜂鸣器
  • Android开发系列(三)Jetpack Compose 之TextField
  • 泛微开发修炼之旅--20关于Ecology中如何查询正文文件的物理文件,并修改正文中的内容的解决方案
  • Chromium 开发指南2024 Mac篇-Xcode安装(二)
  • 【PyQt5】一文向您详细介绍 self.setLayout() 的作用
  • python pandas处理股票量化数据:笔记1
  • 充电学习—7、BC1.2 PD协议
  • CHATGPT说这个运算放大器是比较器,我说这是运放典型的同相比例放大器,一个光控电路分析
  • 关于lamda表达式的使用
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【前端学习】-粗谈选择器
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS盒模型深入
  • JS笔记四:作用域、变量(函数)提升
  • leetcode98. Validate Binary Search Tree
  • mysql外键的使用
  • ng6--错误信息小结(持续更新)
  • overflow: hidden IE7无效
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Rancher如何对接Ceph-RBD块存储
  • rc-form之最单纯情况
  • underscore源码剖析之整体架构
  • vue2.0项目引入element-ui
  • 多线程 start 和 run 方法到底有什么区别?
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 分享几个不错的工具
  • 回顾2016
  • 前端攻城师
  • 嵌入式文件系统
  • 区块链技术特点之去中心化特性
  • 世界上最简单的无等待算法(getAndIncrement)
  • 收藏好这篇,别再只说“数据劫持”了
  • 我感觉这是史上最牛的防sql注入方法类
  • 新版博客前端前瞻
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #php的pecl工具#
  • #考研#计算机文化知识1(局域网及网络互联)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Java数据结构)ArrayList
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (四)事件系统
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Remoting常用部署结构
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET技术成长路线架构图