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

Arrays 的使用

Arrays

概述

提供了数组操作的相关方法,连接数组和集合

asList

  1. 返回指定数组的列表
  2. 列表和数组的引用位置相同
      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

  1. 二分法查找元素
  2. 需要进行排序
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

  1. 创建数组副本
  2. 一个新的数组
     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

  1. 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

  1. 经过比较 速断快与sort
  2. 使用频率越高越明显
  3. 数据量越大越明显从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 为所有的元素赋值

  1. 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));}
http://www.lryc.cn/news/276191.html

相关文章:

  • IDEA中怎么用Postman?这款插件你试试
  • 基于机器视觉的车牌检测-边缘检测因子的选择
  • 学习c语言,变种水仙花
  • K8S--持久卷(PersistentVolume)的用法
  • 书生·浦语大模型趣味 Demo笔记及作业
  • 2024最新前端源码分享(附效果图及在线演示)
  • Microsoft 365 for Mac激活版(原Office 365)
  • 快乐学Python,Python基础之组织代码「类与对象」
  • H5的3D游戏开源框架
  • 浅谈一些生命周期
  • JavaScript基础(25)_dom查询练习(二)
  • 【React系列】React生命周期、setState深入理解、 shouldComponentUpdate和PureComponent性能优化、脚手架
  • 一文初步了解slam技术
  • 滑动窗口协议仿真(2024)
  • uniapp上传文件时用到的api是什么?格式是什么?
  • Java面试——框架篇
  • GO语言笔记1-安装与hello world
  • 指针传参误区
  • 力扣-42.接雨水
  • LeetCode-移动零(283)
  • 文件系统与日志分析
  • labview 与三菱FX 小型PLC通信(OPC)
  • 掌握Linux网络配置:价格亲民,操作简便!
  • 郑州大学算法设计与分析实验2
  • 【CMake】1. VSCode 开发环境安装与运行
  • 使用vue3+<script setup>+element-plus中el-table前端切片完成分页效果
  • vue 中 computed 和 watch 的区别
  • gephi——graphviz插件设置
  • wireshark抓包分析HTTP协议,HTTP协议执行流程,
  • Linux第13步_安装“vim编辑器”及应用介绍