Arrays:点燃你的数组操作技巧的隐秘武器。

news2024/10/6 4:09:36

前言

  数组在 Java 中是一种常用的数据结构,用于存储和操作大量数据。但是在处理数组中的数据,可能会变得复杂和繁琐。Arrays 是我们在处理数组时的一把利器。它提供了丰富的方法和功能,使得数组操作变得更加简单、高效和可靠。无论是排序、搜索、比较还是复制,Arrays 都能够满足我们的需求,来帮助我们充分发挥数组的潜力。接下来我们一起看看 Arrays 的各种功能和用法,以帮助我们更好地利用这个强大的工具。

  1. asList() - 转换为固定大小列表:将指定的元素转换为一个固定大小的列表。
  2. binarySearch() - 二分查找:在指定数组中使用二分查找算法查找指定元素。
  3. copyOf() - 复制数组:将指定数组的副本复制到一个新数组中。
  4. copyOfRange() - 范围复制数组:将指定数组的指定范围内的元素复制到一个新数组中。
  5. fill() - 填充数组:将指定的值填充到数组的每个元素中。
  6. equals() - 比较数组相等性:比较两个数组是否相等。
  7. setAll() - 设置所有元素:使用指定的生成器函数设置数组的元素值。
  8. sort() - 排序数组:对指定数组进行升序排序。
  9. stream() - 转换为流:将数组转换为流。
  10. spliterator() - 分割迭代器:创建一个用于遍历数组元素的分割迭代器。
  11. parallelPrefix() - 并行前缀:对数组中的元素进行累积操作,将结果存储在数组中。
  12. parallelSetAll() - 并行设置所有元素:使用指定的生成器函数并行地设置数组的元素值。
  13. parallelSort() - 并行排序:对指定数组进行并行排序。
  14. hashCode() - 哈希码值:返回数组的哈希码值。
  15. deepHashCode() - 多维数组的哈希码值:返回多维数组的哈希码值。
  16. deepToString() - 多维数组的字符串表示形式:返回多维数组的字符串表示形式。
  17. toString() - 数组的字符串表示形式:返回数组的字符串表示形式。

代码示例

1. asList() - 转换为固定大小列表:

import java.util.Arrays;
import java.util.List;

public class AsListExample {
    public static void main(String[] args) {
        String[] array = {"A", "B", "C"};
        System.out.println("原始数组: " + Arrays.toString(array));
        List<String> list = Arrays.asList(array);
        System.out.println("转换后的列表: " + list);
    }
}

输出结果:

原始数组: [A, B, C]
转换后的列表: [A, B, C]

2. binarySearch() - 二分查找:

import java.util.Arrays;

public class BinarySearchExample {
    public static void main(String[] args) {
        int[] numbers = {2, 4, 6, 8, 10};
        int key = 6;
        System.out.println("数组: " + Arrays.toString(numbers));
        int index = Arrays.binarySearch(numbers, key);
        System.out.println("要查找的元素: " + key);
        System.out.println("元素的索引位置: " + index);
    }
}

输出结果:

数组: [2, 4, 6, 8, 10]
要查找的元素: 6
元素的索引位置: 2

3. copyOf() - 复制数组:

import java.util.Arrays;

public class CopyOfExample {
    public static void main(String[] args) {
        int[] sourceArray = {1, 2, 3};
        System.out.println("源数组: " + Arrays.toString(sourceArray));
        int[] copyArray = Arrays.copyOf(sourceArray, sourceArray.length);
        System.out.println("复制后的数组: " + Arrays.toString(copyArray));
    }
}

输出结果:

源数组: [1, 2, 3]
复制后的数组: [1, 2, 3]

4. copyOfRange() - 范围复制数组:

import java.util.Arrays;

public class CopyOfRangeExample {
    public static void main(String[] args) {
        int[] sourceArray = {1, 2, 3, 4, 5};
        System.out.println("源数组: " + Arrays.toString(sourceArray));
        int[] copyArray = Arrays.copyOfRange(sourceArray, 1, 4);
        System.out.println("复制后的数组: " + Arrays.toString(copyArray));
    }
}

输出结果:

源数组: [1, 2, 3, 4, 5]
复制后的数组: [2, 3, 4]

5. fill() - 填充数组:

import java.util.Arrays;

public class FillExample {
    public static void main(String[] args) {
        int[] arrayToFill = new int[5];
        System.out.println("原始数组: " + Arrays.toString(arrayToFill));
        int valueToFill = 10;
        Arrays.fill(arrayToFill, valueToFill);
        System.out.println("填充后的数组: " + Arrays.toString(arrayToFill));
    }
}

输出结果:

原始数组: [0, 0, 0, 0, 0]
填充后的数组: [10, 10, 10, 10, 10]

6. equals() - 比较数组相等性:

import java.util.Arrays;

public class EqualsExample {
    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {1, 2, 3};
        System.out.println("数组1: " + Arrays.toString(array1));
        System.out.println("数组2: " + Arrays.toString(array2));
        boolean areEqual = Arrays.equals(array1, array2);
        System.out.println("数组1和数组2是否相等: " + areEqual);
    }
}

输出结果:

数组1: [1, 2, 3]
数组2: [1, 2, 3]
数组1和数组2是否相等: true

7. setAll() - 设置所有元素:

import java.util.Arrays;

public class SetAllExample {
    public static void main(String[] args) {
        int[] arrayToSet = new int[5];
        System.out.println("原始数组: " + Arrays.toString(arrayToSet));
        Arrays.setAll(arrayToSet, i -> i * 2);
        System.out.println("设置后的数组: " + Arrays.toString(arrayToSet));
    }
}

输出结果:

原始数组: [0, 0, 0, 0, 0]
设置后的数组: [0, 2, 4, 6, 8]

8. sort() - 排序数组:

import java.util.Arrays;

public class SortExample {
    public static void main(String[] args) {
        int[] arrayToSort = {5, 2, 8, 1, 6};
        System.out.println("原始数组: " + Arrays.toString(arrayToSort));
        Arrays.sort(arrayToSort);
        System.out.println("排序后的数组: " + Arrays.toString(arrayToSort));
    }
}

输出结果:

原始数组: [5, 2, 8, 1, 6]
排序后的数组: [1, 2, 5, 6, 8]

9. stream() - 转换为流:

import java.util.Arrays;

public class StreamExample {
    public static void main(String[] args) {
        int[] arrayToStream = {1, 2, 3, 4, 5};
        System.out.println("数组: " + Arrays.toString(arrayToStream));
        Arrays.stream(arrayToStream).forEach(System.out::println);
    }
}

输出结果:

数组: [1, 2, 3, 4, 5]
1
2
3
4
5

10. spliterator() - 分割迭代器:

import java.util.Arrays;

public class SpliteratorExample {
    public static void main(String[] args) {
        int[] arrayToSplit = {1, 2, 3, 4, 5};
        System.out.println("数组: " + Arrays.toString(arrayToSplit));
        Arrays.spliterator(arrayToSplit).forEachRemaining((Consumer<Integer>) System.out::println);
    }
}

输出结果:

数组: [1, 2, 3, 4, 5]
1
2
3
4
5

11. parallelPrefix() - 并行前缀:

import java.util.Arrays;

public class ParallelPrefixExample {
    public static void main(String[] args) {
        int[] arrayToPrefix = {1, 2, 3, 4, 5};
        System.out.println("原始数组: " + Arrays.toString(arrayToPrefix));
        Arrays.parallelPrefix(arrayToPrefix, (a, b) -> a * b);
        System.out.println("并行前缀数组: " + Arrays.toString(arrayToPrefix));
    }
}

输出结果:

原始数组: [1, 2, 3, 4, 5]
并行前缀数组: [1, 2, 6, 24, 120]

12. parallelSetAll() - 并行设置所有元素:

import java.util.Arrays;

public class ParallelSetAllExample {
    public static void main(String[] args) {
        int[] arrayToSetAll = new int[5];
        System.out.println("原始数组: " + Arrays.toString(arrayToSetAll));
        Arrays.parallelSetAll(arrayToSetAll, i -> i * 3);
        System.out.println("设置后的数组: " + Arrays.toString(arrayToSetAll));
    }
}

输出结果:

原始数组: [0, 0, 0, 0, 0]
设置后的数组: [0, 3, 6, 9, 12]

13. parallelSort() - 并行排序:

import java.util.Arrays;

public class ParallelSortExample {
    public static void main(String[] args) {
        int[] arrayToParallelSort = {5, 2, 8, 1, 6};
        System.out.println("原始数组: " + Arrays.toString(arrayToParallelSort));
        Arrays.parallelSort(arrayToParallelSort);
        System.out.println("排序后的数组: " + Arrays.toString(arrayToParallelSort));
    }
}

输出结果:

原始数组: [5, 2, 8, 1, 6]
排序后的数组: [1, 2, 5, 6, 8]

14. hashCode() - 哈希码值:

import java.util.Arrays;

public class HashCodeExample {
    public static void main(String[] args) {
        int[] arrayToHash = {1, 2, 3};
        System.out.println("数组: " + Arrays.toString(arrayToHash));
        int hashCode = Arrays.hashCode(arrayToHash);
        System.out.println("数组的哈希码值: " + hashCode);
    }
}

输出结果:

数组: [1, 2, 3]
数组的哈希码值: 30817

15. deepHashCode() - 多维数组的哈希码值:

import java.util.Arrays;

public class DeepHashCodeExample {
    public static void main(String[] args) {
        int[][] multiDimensionalArray = {{1, 2}, {3, 4}};
        System.out.println("多维数组: " + Arrays.deepToString(multiDimensionalArray));
        int deepHashCode = Arrays.deepHashCode(multiDimensionalArray);
        System.out.println("多维数组的哈希码值: " + deepHashCode);
    }
}

输出结果:

多维数组: [[1, 2], [3, 4]]
多维数组的哈希码值: 32833

16. deepToString() - 多维数组的字符串表示形式:

import java.util.Arrays;

public class DeepToStringExample {
    public static void main(String[] args) {
        int[][] multiDimensionalArray = {{1, 2}, {3, 4}};
        System.out.println("多维数组: " + Arrays.deepToString(multiDimensionalArray));
    }
}

输出结果:

多维数组: [[1, 2], [3, 4]]

17. toString() - 数组的字符串表示形式:

import java.util.Arrays;

public class ToStringExample {
    public static void main(String[] args) {
        int[] arrayToString = {1, 2, 3};
        System.out.println("数组: " + Arrays.toString(arrayToString));
    }
}

输出结果:

数组: [1, 2, 3]

结尾

  如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

  我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

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

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

相关文章

【c语言】字符串类型转换 | itoa函数的使用

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

MySQL innodb介绍

InnoDB引擎的优点是支持兼容ACID的事务&#xff0c;以及参数完整性&#xff08;即对外键的支持&#xff09;。 Oracle公司2005年10月收购了Innovase&#xff1b;Innobase采用双认证授权。它使用GNU发行&#xff0c;也允许其他想将InnoDB结合到商业软件的团体好的授权 mysql5.…

Java 动态原理详解

Java 动态代理是一种非常重要的编程技术&#xff0c;它在很多场景下都有着广泛的应用。本文将介绍 Java 动态代理的实现原理&#xff0c;并附上相应的源码&#xff0c;以帮助读者更好地理解和应用这一技术。 一、什么是 Java 动态代理&#xff1f; Java 动态代理是一种在运行时…

【并发基础】Happens-Before模型详解

目录 一、Happens-Before模型简介 二、组成Happens-Before模型的八种规则 2.1 程序顺序规则&#xff08;as-if-serial语义&#xff09; 2.2 传递性规则 2.3 volatile变量规则 2.4 监视器锁规则 2.5 start规则 2.6 Join规则 一、Happens-Before模型简介 除了显示引用vo…

双目测距--5 双目相机 联合 YOLOv8

目录 效果&#xff1a; 1、立体矫正不改变图像尺寸 2、视差图尺寸与原图尺寸一致 3、视差图、深度信息图 4、几个重要的函数 createTracker() 5、代码 main.cpp utils.cpp 效果&#xff1a; 1、立体矫正不改变图像尺寸 左右相机图像立体矫正后&#xff0c;图像尺寸为变化…

freeRTOS中使用看门狗的一点思考

关于看门狗想必各位嵌入式软件开发的朋友应该都不会陌生的。在嵌入式软件开发中&#xff0c;看门狗常被用于监测cpu的程序是否正常在运行&#xff0c;如果cpu程序运行异常会由看门狗在达到设定的阈值时触发复位&#xff0c;从而让整个cpu复位重新开始运行。 看门狗的本质是一个…

Qt QQueue 安全的多线程队列、阻塞队列

文章目录 1. C queue 队列基本用法2. Qt QQueue 队列基本用法3. Qt QQueue 多线程队列4. Qt BlockingQueue 自定义线程安全的阻塞队列 1. C queue 队列基本用法 在C中&#xff0c;queue是一个模板类&#xff0c;用于实现队列数据结构&#xff0c;遵循先进先出的原则。 ♦ 常用…

测试3:用例

目录 1.测试用例的基本要素 2.测试用例的设计方法 1.基于需求的设计方法 2.等价类 1.概念 2.步骤: 3.例子 3.边界值 1.概念 2.步骤 3.例子 4.判定表 1.概念 2.设计测试用例 3.例子 5.正交排列 1.什么是正交表 2.测试用例 3.如何通过正交表设计测试用例 6.场景…

(3)Qt——信号槽

目录 1.信号槽的概念** 2.信号槽的连接*** 2.1自带信号 → 自带槽 2.2 自带信号 → 自定义槽 2.3 自定义信号 3. 参数传递** 3.1 全局变量 3.2 信号槽传参 4. 对应关系** 4.1 一对多 4.2 多对一 1.信号槽的概念** 信号槽指的是信号函数与槽函数的连接&#xff0c;可…

AI绘图入门 安装 stable-diffusion-webui

下面介绍了N卡&#xff0c;A卡&#xff0c;或CPU跑 stable-diffusion-webui的方法。 1.安装python 3.10.x https://www.python.org/downloads/ 2.安装Git https://git-scm.com/downloads 【非必要】打开代理工具&#xff08;比如clash&#xff09;然后在cmd配置git的http和…

软件测试相关概念

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 需求需求的定义测试人员眼中的需求为什么需求对测试人员如此重要如何深入理解需求 测试用例定义为什么要有测试用例 软件错误…

IT服务规划设计笔记

规划设计处于整个IT服务生命周期中的前端&#xff0c;其主要目的在于&#xff1a; &#xff08;1&#xff09;设计满足业务需求的IT服务 &#xff08;2&#xff09;设计SLA、测量方法和指标 &#xff08;3&#xff09;设计服务过程及其控制方法 &#xff08;4&#xff09;规…

learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景)

return 关键字 不知道我们大家是否有一个疑惑&#xff1a;我们下载一个大型游戏软件&#xff08;王者荣耀&#xff09;&#xff0c;都要花几个小时去下载&#xff0c;但是一旦我们游戏连输&#xff0c;想要删除这个软件的时候&#xff0c;它仅仅只需要十几秒&#xff0c;这是为…

主题建模和文本聚类:理论与实践

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

真题详解(3FN)-软件设计(六十九)

真题详解&#xff08;构造二叉树&#xff09;-软件设计&#xff08;六十八)https://blog.csdn.net/ke1ying/article/details/130536155 学生信息学生id姓名性别1{家长ID}*班主任班级。 解析&#xff1a;当存在1对多的情况&#xff0c;要写个1{}*&#xff0c;中间用{}。 ()表…

一篇学会Gitlab搭建及使用

目录 一、Gitlab介绍 1、什么是Gitlab 二、搭建gitlab并实现ssl 1、配置yum源或下载gitlab包 2、安装依赖软件及获取GPG密钥 3、安装gitlab-ce 4、创建私有密钥 5、创建私有证书 6、创建CRT签名证书 7、利用openssl签署pem 证书 8、配置证书到gitlab 9、初始化gitla…

读书笔记:《图解CIO工作指南》

《图解CIO工作指南》第 4 版&#xff0c;日 . 野村综合研究所系统咨询事业本部 著&#xff0c;周自恒 译 大数据、云计算时代下的IT战略和IT实务 CIO工作&#xff1a;IT管理、IT架构、IT实践 以着眼企业未来的观点进行构思&#xff1a;可视化&#xff08;业务与系统&am…

初始化vue中data中的数据

当组件的根元素使用了v-if的时候, 并不会初始化data中的数据 如果想完全销毁该组件并且初始化数据,需要在使用该组件的本身添加v-if 或者是手动初始化该组件中的数据 初始化化数据的一些方法 Object.assign(this.$data, this.$options.data()) this.$data&#xff1a;当前的da…

TortoiseGit(大乌龟)安装教程(Git 图形化工具,告别手敲命令)

TortoiseGit安装教程 1. 下载TortoiseGit 官方下载地址&#xff1a;https://tortoisegit.org/download/ 自行选择下载对应版本&#xff08;大部分位64位&#xff09;&#xff0c;进行下载 2. 安装TortoiseGit 打开安装包&#xff0c;如下图所示&#xff1a; 点击 Next&…

IDM绿色最新2023中文版磁力下载工具

Internet Download Manager&#xff08;idm&#xff09;是一款优秀的多线程下载工具。它支持自动捕获剪贴板及浏览器及流媒体网站的音视频下载链接&#xff0c;还有批量队列下载、静默下载、站点抓取等众多功能选项&#xff0c;可以说是 Windows 平台上功能最为强大的多线程下载…