Arrays 的使用
Arrays
概述
提供了数组操作的相关方法,连接数组和集合
asList
- 返回指定数组的列表
- 列表和数组的引用位置相同
Integer[] arrs = new Integer[] {1,2,3,4,5,6,7,8,9};List<Integer> list = Arrays.asList(arrs);System.out.println(list);arrs[5] = 100;System.out.println(list);//[1, 2, 3, 4, 5, 6, 7, 8, 9]//[1, 2, 3, 4, 5, 100, 7, 8, 9]}
binarySearch
- 二分法查找元素
- 需要进行排序
Integer[] arrs = new Integer[] {1,2,3,4,5,6,7,8,9};int num = Arrays.binarySearch(arrs, 5);System.out.println(num);
//4
copyOf copyOfRange
- 创建数组副本
- 一个新的数组
Integer[] arrs = new Integer[] {1,2,3,4,5,6,7,8,9};Integer[] arrs1 = Arrays.copyOf(arrs, 5);for(Integer i : arrs1) {System.out.print(i + " ");}System.out.println();//1 2 3 4 5 arrs1[3] = 100;for(Integer i : arrs) {System.out.print(i + " ");}//1 2 3 4 5 6 7 8 9 System.out.println();for(Integer i : arrs1) {System.out.print(i + " ");}//1 2 3 100 5 Integer[] ret = Arrays.copyOf(arrs,20,Integer[].class);System.out.println();for(Integer i : ret) {System.out.print(i + " ");}//1 2 3 4 5 6 7 8 9 null null null null null null null null null null nullInteger[] range = Arrays.copyOfRange(arrs, 5, 20);System.out.println();for(Integer i : ret) {System.out.print(i + " ");}//1 2 3 4 5 6 7 8 9 null null null null null null null null null null null
equals deepEquals
- deepEquals 是深层次的比较,比如嵌套数组
Integer[] arrs = new Integer[] {1,2,3,4,5,6,7,8,9};Integer[] arrs1 = new Integer[] {1,2,3,4,5,6,7,8,9};System.out.println(arrs);System.out.println(arrs1);System.out.println(Arrays.equals(arrs, arrs1));
// [Ljava.lang.Integer;@2077d4de
// [Ljava.lang.Integer;@7591083d
// true
Arrays.fill填充数组
public void test5() {Integer[] arrs = new Integer[10];Arrays.fill(arrs, 100);for(Integer i : arrs) {System.out.print(i + " ");}//100 100 100 100 100 100 100 100 100 100 }
sort
public void test6() {Integer[] arrs = new Integer[20];for(int i=0;i<20;i++)arrs[i] = (int)(Math.random()*100);for(int i:arrs) {System.out.print(i + " ");}System.out.println();//49 40 0 79 4 98 12 81 71 27 9 45 16 17 7 92 63 22 73 22 Arrays.sort(arrs);for(int i:arrs) System.out.print(i + " ");System.out.println();//0 4 7 9 12 16 17 22 22 27 40 45 49 63 71 73 79 81 92 98 Arrays.sort(arrs,(o1,o2)->o2-o1);for(int i:arrs) System.out.print(i + " ");//98 92 81 79 73 71 63 49 45 40 27 22 22 17 16 12 9 7 4 0 }
parallelSort
- 经过比较 速断快与sort
- 使用频率越高越明显
- 数据量越大越明显从1000~10000000开始进行100次测试
public void test7() {//生产1万个元素int len = 100000;Integer[] arrs = new Integer[len];for(int i=0;i<len;i++)arrs[i] = (int)(Math.random()*100);long t1 = System.currentTimeMillis();Arrays.sort(arrs);long t2 = System.currentTimeMillis();System.out.println("sort\t"+(t2-t1));for(int i=0;i<len;i++)arrs[i] = (int)(Math.random()*100);long t3 = System.currentTimeMillis();Arrays.parallelSort(arrs);long t4 = System.currentTimeMillis();System.out.println("parallelSort\t"+(t4-t3));System.out.println("------------------------------");}
public void test8() {for(int i=0;i<100;i++) {test7();}}
sort 35
parallelSort 64
------------------------------
sort 40
parallelSort 73
------------------------------
sort 107
parallelSort 53
------------------------------
sort 73
parallelSort 63
------------------------------
sort 74
parallelSort 62
····
····
spliterator 遍历数组
int len = 100;Integer[] arrs = new Integer[len];for(int i=0;i<len;i++)arrs[i] = (int)(Math.random()*100);Spliterator<Integer> s = Arrays.spliterator(arrs);s.forEachRemaining((e)->System.out.print(e + " "));
Stream
public void test10() {int len = 10;Integer[] arrs = new Integer[len];for(int i=0;i<len;i++)arrs[i] = (int)(Math.random()*100);List<Integer> list = Arrays.stream(arrs).collect(Collectors.toList());System.out.println(list);//[56, 33, 59, 63, 55, 37, 68, 52, 53, 3]}
setAll parallelSetAll 为所有的元素赋值
- parallelSetAll 并行处理,速度会快
public void test11() {int len = 10;Integer[] array = new Integer[len];Arrays.setAll(array, (e)->10);for(int i:array)System.out.print(i + " ");System.out.println();Arrays.parallelSetAll(array, (e)->e + 10);for(int i:array)System.out.print(i + " ");// 10 10 10 10 10 10 10 10 10 10
// 10 11 12 13 14 15 16 17 18 19 }
parallelPrefix 每个元素都包含对前面的所有元素应用某个操作的累计结果
public void test12() {int len = 10;int[] array = new int[len];Arrays.parallelPrefix(array, (e,u)->{System.out.println(e + "\t" + u);return e +1;});System.out.println();for(int i:array)System.out.print(i + " ");}
toString deepToString(嵌套数组) hashCode deepHashCode
public void test13() {int len = 10;Integer[] arrs = new Integer[len];for(int i=0;i<len;i++)arrs[i] = (int)(Math.random()*100);System.out.println(Arrays.toString(arrs));System.out.println(Arrays.hashCode(arrs));}
相关文章:
Arrays 的使用
Arrays 概述 提供了数组操作的相关方法,连接数组和集合 asList 返回指定数组的列表列表和数组的引用位置相同 Integer[] arrs new Integer[] {1,2,3,4,5,6,7,8,9};List<Integer> list Arrays.asList(arrs);System.out.println(list);arrs[5] 100;Syste…...
IDEA中怎么用Postman?这款插件你试试
Postman是大家最常用的API调试工具,那么有没有一种方法可以不用手动写入接口到Postman,即可进行接口调试操作?今天给大家推荐一款IDEA插件:Apipost Helper,写完代码就可以调试接口并一键生成接口文档!而且还…...
基于机器视觉的车牌检测-边缘检测因子的选择
车牌检测概述 车牌识别在检测报警、汽车出入登记、交通违法违章以及移动电子警察方面应用广泛。车牌识别过程为:首先通过摄像头获取包含车牌的彩色图像;然后进行车牌边缘检测,先粗略定位到车牌位置,再精细定位;最后根…...
学习c语言,变种水仙花
利用函数次方pow...
K8S--持久卷(PersistentVolume)的用法
原文网址:K8S--持久卷(PersistentVolume)的用法-CSDN博客 简介 本文介绍K8S的持久卷(PersistentVolume)的用法。 目标:用持久卷的方式将主机的磁盘与容器磁盘映射,安装nginx并运行。 --------------------------------------------------…...
书生·浦语大模型趣味 Demo笔记及作业
文章目录 笔记作业基础作业:进阶作业: 笔记 书生浦语大模型InternLM-Chat-7B 智能对话 Demo:https://blog.csdn.net/m0_49289284/article/details/135412067书生浦语大模型Lagent 智能体工具调用 Demo:https://blog.csdn.net/m0_…...
2024最新前端源码分享(附效果图及在线演示)
分享10款非常有趣的前端特效源码 其中包含css动画特效、js原生特效、svg特效以及小游戏等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 粒子文字动画特效 基于canvas实现的粒子文字动画特效 会来回切换设定的文字特效 图…...
Microsoft 365 for Mac激活版(原Office 365)
Microsoft 365 for Mac原office 365,包含Word、Excel、PowerPoint 和 Outlook应用程序,协作办公的最佳首选。 软件下载:Microsoft 365 for Mac激活版下载 Microsoft 365 的一些主要功能包括: office 应用程序:Microsof…...
快乐学Python,Python基础之组织代码「类与对象」
在上一篇文章中,我们了解了函数。这一篇文章我们来了解一下Python中另外一个重要的概念:类与对象。 1、类与对象 (1)类与对象有什么关系? 你可能会奇怪,为什么要叫类与对象呢?是两个不同的东…...
H5的3D游戏开源框架
在H5的3D游戏框架中,Three.js、Babylon.js和Turbulenz是比较受欢迎的选择。 Three.js是一个广泛应用并且功能强大的JavaScript 3D库,可以创建简单的3D动画到创建交互的3D游戏。 Babylon.js是David Catuhe对3D游戏引擎热爱的结果,是最好的Ja…...
浅谈一些生命周期
vue2生命周期 beforeCreate :实例创建之初 created:组件已经创建完成 beforeMount:组件挂载之前 mounted:组件挂载之后 beforeUpdate:数据发生变化 更新之前 undated:数据发生之后 beforeDestroy :实…...
JavaScript基础(25)_dom查询练习(二)
<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>dom查询练习二</title><link rel"stylesheet" href"../browser_default_style/reset.css"><style>form {margi…...
【React系列】React生命周期、setState深入理解、 shouldComponentUpdate和PureComponent性能优化、脚手架
本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 生命周期 1.1. 认识生命周期 很多的事物都有从创建到销毁的整个过程,这个过程称之为是生命周期&…...
一文初步了解slam技术
本文初步介绍slam技术,主要是slam技术的概述,涉及技术原理、应用场景、分类、以及各自优缺点,和slam技术的未来展望。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:slam精进之…...
滑动窗口协议仿真(2024)
1.题目描述 滑动窗口协议以基于分组的数据传输协议为特征,该协议适用于在数据链路层以及传输层中对按 顺序传送分组的可靠性要求较高的环境。在长管道传输过程(特别是无线环境)中,相应的滑动窗口 协议可实现高效的重传恢复。附录 …...
uniapp上传文件时用到的api是什么?格式是什么?
在UniApp中,你可以使用uni.uploadFile()方法来上传文件。这是一个异步方法,用于将本地资源上传到服务器。 该方法的基本格式如下: uni.uploadFile({url: 上传接口地址,filePath: 要上传的文件路径,name: 后端接收的文件参数名,formData: {/…...
Java面试——框架篇
1、Spring框架中的单例bean是线程安全的吗? 所谓单例就是所有的请求都用一个对象来处理,而多例则指每个请求用一个新的对象来处理。 结论:线程不安全。 Spring框架中有一个Scope注解,默认的值就是singleton,单例的。一…...
GO语言笔记1-安装与hello world
SDK开发工具包下载 Go语言官网地址:golang.org,无法访问Golang中文社区:首页 - Go语言中文网 - Golang中文社区下载地址:Go下载 - Go语言中文网 - Golang中文社区 尽量去下载稳定版本,根据使用系统下载压缩包格式的安装…...
指针传参误区
C语言中指针作为形参传递时,func(*a, *b) 这种形式的话,是无法通过简单的 ab来修改的,在函数体内a的地址确实被修改成b的地址了,但是当函数执行结束时,a的地址会重新回到原本的地址里面…...
力扣-42.接雨水
题目: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组[0,1,0,2…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
