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) {
        // 创建一个 Stack
        Stack<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() + " ");
        }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TikTok养号新手保姆级教程

对于很多刚开始运营TikTok的新手小白来说&#xff0c;都会有一个同样的疑问&#xff0c;那就是&#xff1a;TikTok到底需不需要养号&#xff1f;这里明确告诉大家是需要养号的&#xff0c;今天就把我自己实操过的养号经验和策略总结出来&#xff0c;分享给大家。 一、什么是Ti…

kotlin数组

1、kotlin中的数组与java数组比较&#xff1a; 2、创建 fun main() {// 值创建val a intArrayOf(1,2,3)// 表达式创建val b IntArray(3){println("it: ${it}")it1}println("a数组&#xff1a;${a.contentToString()}, 长度&#xff1a;${a.size}")prin…

怎样打印微信文档文件?

在日常生活和工作中&#xff0c;我们经常需要打印微信中的文档文件&#xff0c;无论是工作资料、学习笔记还是其他重要信息。随着科技的发展&#xff0c;我们不再需要前往打印店进行繁琐的操作&#xff0c;而是可以通过一些便捷的在线打印平台轻松实现。今天&#xff0c;我们就…

CleanMyMac中文版2024破解版安装包下载最新官方免费激活码

CleanMyMac中文版&#xff0c;让你的电脑焕然一新&#xff01; 大家好&#xff0c;今天我要给大家推荐一款神奇的软件——CleanMyMac中文版。作为一个长期使用Mac的用户&#xff0c;我一直在寻找一款能够彻底清理电脑垃圾和优化系统的工具&#xff0c;而CleanMyMac正是我心心念…

Vue2动态代理无须重启项目解决方案

1、痛点 如果我们需要使用不同的环境地址的时候&#xff0c;就需要使用命令或者手动修改vue.config.js中配置来重新启动项目。当项目项目越来越大的时候&#xff0c;我们需要很长的时间来启动项目&#xff0c;如此反复&#xff0c;极大影响我们开发进度。 2、寻求解决方案 ● v…

基于Redis实现共享session登录

搭配食用&#xff1a;Redis&#xff08;基础篇&#xff09;-CSDN博客 项目实现前的 Mysql中的表&#xff1a; 表说明tb_user用户表tb_user_info用户详情表tb_shop商户信息表tb_shop_type商户类型表tb_blog用户日记表&#xff08;达人探店日记)tb_follow用户关注表tb_voucher优…

[Qt] Qt Creator 编码警告:warning:C4819

Qt项目使用VC&#xff08;2019 64bit&#xff09;编译器出现此错误。 warning&#xff1a;C4819&#xff1a;该文件包含不能在当前代码页&#xff08;936&#xff09;中表示的字符。请将该文件保存为Unicode格式以防止数据丢失。(可能这个警告内容也会在Qt Creator 中乱码) 如…

5.How Fast Should You Be When Learning?(你应该用多快的速度学习?)

Normally when I talk about learing quickly, I’m using speed as a synonym for efficiency.Use more effective methods and you’ll learn more in less time.All else being equal, that means you’re learing faster. 通常我在谈到快速学习时&#xff0c;是把“速度&qu…

APP渗透、WIFI近源渗透之透明代理下的流量分析与嗅探

APP渗透、WIFI近源渗透之透明代理下的流量分析与嗅探 原文链接&#xff1a;https://xz.aliyun.com/t/14864 前言 在攻防中对APP进行渗透时可能会遇到代理及VPN的检测&#xff0c;以及在近源渗透时可能会有WIFI钓鱼的需求&#xff0c;而透明代理是一个很好的解决方案&#xf…

Flume基础教程

Apache Flume教程 资料来源&#xff1a;Apache Flume - Introduction (tutorialspoint.com) Flume是一个标准的、简单的、健壮的、灵活的、可扩展的工具&#xff0c;用于将从各种数据生产者(web服务器)中所产生的数据抽取到Hadoop中。在本教程中&#xff0c;我们将使用简单的…

Ubuntu24多版本python解释器使用

1.前言 已给树莓派5安装了Ubuntu24.04&#xff0c;带有python3.12.3&#xff0c;现在用视觉需要用到3.11版本的python解释器 2.实操过程 主要是对用到的命令进行备份&#xff0c;方便后面查询 2.1 安装python3.11 sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-ge…

数据结构习题

第一章 绪论 与数据元素本身的形式、内容、相对位置、个数无关的是数据的 逻辑结构。 第二章 线性表 在一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变&#xff0c;平均要移动的元素个数为 63.5。 n/2 单链表的存储密度 小于1。 创建一个包括n个结点的有序单链…

ClickHouse 高性能的列式数据库管理系统

ClickHouse是一个高性能的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;。以下是对ClickHouse的详细介绍&#xff1a; 基本信息&#xff1a; 来源&#xff1a;由俄罗斯的Yandex公司于2016年开源。全称&…

pg分区表和mysql分区表的创建及删除添加操作

一、分区的类型 1、pg分区的类型 范围划分 列表划分 哈希分区 2、mysql分区的类型 范围分区 列表分区 hash分区 列分区 密匙分区 子分区 二、pg范围分区表的创建删除添加操作 1、pg分区表的创建 2、pg的分区表删除 3、pg分区表的添加 创建新的子分区 添加新创建的子分区 …

注解详解系列 - @ResponseStatus

注解简介 在今天的每日一注解中&#xff0c;我们将探讨ResponseStatus注解。ResponseStatus是Spring框架中的一个注解&#xff0c;用于为控制器方法指定HTTP响应状态码和理由短语。 注解定义 ResponseStatus注解用于标记控制器方法或异常类&#xff0c;以指示HTTP响应的状态码…

用python克隆了前男友的声音

声音克隆开源项目推荐&#xff1a;MockingBird 项目简介 MockingBird 是一个由开源社区开发的声音克隆项目&#xff0c;托管在 GitHub 上。该项目旨在通过深度学习技术实现高质量的声音克隆&#xff0c;使用户能够合成任意人的声音&#xff0c;并生成自然、流畅的语音输出。M…

vivado PKGPIN_NIBBLE

描述 PKGPIN_NIBBLE是PKGPIN_BYTEGROUP的一部分。参见PKGPIN_BYTEGROUP&#xff0c; 第122页了解该对象的描述。 相关对象 PKGPIN_BYTEGROUP和PKGPIN_NIBBLE与IO_BANK、PACKAGE_PIN和 PORT&#xff0c;如前所述。此外&#xff0c;每个PKGPIN_NIBBLE都与 Xilinx设备。您可以使用…

threejs材质的贴图(四)

效果 代码实现 import ./style.css import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js//相机轨道控制器 import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js"//加载hdr文件作为环境贴…

Cesium入门学习(一)

下载cesium源代码 安装依赖 npm install注册账户&#xff0c;申请一个token 没有这个token&#xff0c;会导致地图中只能看到一个宇宙&#xff0c;没有办法看到地球 cesium的官网&#xff1a;cesium官网 替换token 替换对应位置的token 启动 运行 npm run build npm r…

网络聚合通信测试--自动化测试脚本

一 网络聚合通信测试 以下测试用例为&#xff1a; 整集群测试&#xff0c;每节点进程数从2开始以2的幂次增加至满核心&#xff1b; 测试常见的通信聚合测试8个条目 二 测试前准备 待测节点已完成OS安装及基础配置待测节点已配置完IP&#xff08;若存在IB&#xff0c;则需要配置…