这个类在日常的开发中,还是非常常用的。今天就总结一下Arrays工具类的常用方法。最常用的就是asList,sort,toStream,equals,copyOf了。另外可以深入学习下Arrays的排序算法,这个还是非常有用的。

所有的方法都是在下面的类中进行测试的:

public class ArraysTest {

String[] array = new String[]{"a","c","2","1","b"};

Integer[] ints = new Integer[]{5,1,4,3,2};

...

}

asList

这个方法可以把数组转换成List,List提供了很多的操作方法,更便于使用。

@Test

public void test1(){

List lists = Arrays.asList(array);

}

sort排序和parallelSort并行排序

sort比较常用了,根据元素按照自然排序规则排序,也可以设置排序元素的起始位置。

@Test

public void sort(){

/* Arrays.sort(array);

for(String str : array){

System.out.println(str);

}*/

Arrays.sort(array,2,5);

System.out.println(Arrays.deepToString(array));//[a, c, 1, 2, b]

}

parallelSort则采用并行的排序算法排序.但是我自己测试,可能数据量太小,速度上并没有明显的变化。

binarySearch

查找目标元素所在的位置,注意需要先进行排序。

@Test

public void binarySearch(){

//binarySearch需要保证是排好序的

System.out.println(Arrays.binarySearch(array,"c"));//-6

Arrays.sort(array);

System.out.println(Arrays.binarySearch(array,"c"));//4

}

copyOf

拷贝数组,第一种用法,如果目标长度不够,会使用0进行补位。第二种用法,支持拷贝目标起始位置到结束为止的数组。

@Test

public void copyOf(){

//如果位数不够,需要补位

Integer[] result = Arrays.copyOf(ints,10);

for(int i : result){

System.out.println(i);

}

System.out.println("----------------------------------------->");

//如果位数够,就取最小的数组

result = Arrays.copyOf(ints,3);

for(int i : result){

System.out.println(i);

}

System.out.println("----------------------------------------->");

//

result = Arrays.copyOfRange(ints,2,4);

for(int i : result){

System.out.println(i);

}

}

deepEquals深度比较、deepHashCode生成hashcode、deepToString深度打印

这几个方法基本都是采用递归的写法使用。

@Test

public void deepTest(){

String[] array2 = new String[]{"a","c","2","1","b"};

System.out.println(Arrays.deepEquals(array,array2));//深度比较两个数组是否相同

System.out.println(Arrays.deepHashCode(array));

System.out.println(Arrays.deepHashCode(array2));//如果两个数组deepEquals,那么他们的hashcode一定相同

//格式化输出数组

System.out.println(Arrays.deepToString(array));

}

equals比较

对比两个数组是否相等

@Test

public void equals(){

String[] array2 = new String[]{"a","c","2","1","b"};

//1 对比引用是否相同

//2 对比是否存在null

//3 对比长度是否相同

//4 挨个元素对比

System.out.println(Arrays.equals(array,array2));

}

fill

基于目标元素填充数组

@Test

public void fill(){

Arrays.fill(array,"test");

System.out.println(Arrays.deepToString(array));//[test, test, test, test, test]

}

toString

打印数组元素

@Test

public void string(){

System.out.println(Arrays.toString(array));//[a, c, 2, 1, b]

}

toStream

把数组转换成stream,然后可以使用java8的stream特性了。

@Test

public void toStream(){

Arrays.stream(array).forEach(s-> System.out.println(s));

}

parallelPrefix

这个有点像spark的reduceByKey,即根据传入的方法一次计算:

@Test

public void parallelPrefix(){

Arrays.parallelPrefix(ints,(x,y)->(x+y));

System.out.println(Arrays.deepToString(ints));//[5, 6, 10, 13, 15]

}

parallelSetAll

这个方法相当于stream.map会挨个元素遍历执行方法

@Test

public void parallelSetAll(){

Arrays.parallelSetAll(ints,x->x*x);

System.out.println(Arrays.toString(ints));//[0, 1, 4, 9, 16]

}

setAll

这个方法与上面类似,只不过不是并行的

@Test

public void setAll(){

Arrays.setAll(ints,x->x*2);

System.out.println(Arrays.toString(ints));

}

java arrays.setall_Java程序员的日常—— Arrays工具类的使用相关推荐

  1. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  2. Java程序员的日常—— 垃圾回收中引用类型的作用

    在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情.因此了解垃圾回收的相关知识就显得很重要了. 引用,在垃圾回收中是 ...

  3. java程序员的日常_Java程序员的日常——经验贴(纯干货)

    工作当中遇到的事情比较杂,因此涉及的知识点也很多.这里暂且记录一下,今天遇到的知识点,纯干货~ 关于文件的解压和压缩 如果你的系统不支持tar -z命令 如果是古老的Unix系统,可能并不认识tar ...

  4. Java程序员的日常

    工作当中遇到的事情比较杂,因此涉及的知识点也很多.这里暂且记录一下,今天遇到的知识点,纯干货~ 转自https://my.oschina.net/u/3518116/blog/979024?ref=m ...

  5. JAVA程序员的日常工作是什么?一文告诉知道!

    由于Java的企业需求热度,想学习Java并获得就业安排的学员也只增不减.而对于Java工程师来说,每天的工作内容是怎样的呢?本篇带大家了解一下Java开发者的日常工作,希望会有所收获. 首先对于一个 ...

  6. JAVA程序员的日常工作是什么?一文告诉知道

    由于Java的企业需求热度,想学习Java并获得就业安排的学员也只增不减.而对于Java工程师来说,每天的工作内容是怎样的呢?本篇带大家了解一下Java开发者的日常工作,希望会有所收获. 首先对于一个 ...

  7. chrome java插件_Java程序员喜欢的10款软件里有你在用的吗?

    作为一名Java程序员,日常开发的过程中,我们需要借助很多工具来进行编码.好的工具可以极大的提升程序员的工作效率,今天我们来认识下大多数程序员喜欢的10款软件.持不同意见或有想要补充的小伙伴,欢迎评论 ...

  8. Java 程序员开发常用的工具(全)

    Java 程序员开发常用的工具 作为一名Java程序开发人员,可以的选择集成开发环境IDE(Integrated Development Environment)非常多,得益于Java是一门开源语言. ...

  9. 11张图揭露了程序员的日常生活,看完笑哭(泪奔)!

    (点击上方公众号,可快速关注) 程序员的日常生活中只有代码和电脑,做为一个程序员,我更了解程序员,下面带你走进程序员的神秘日常生活,程序员大佬们也看看,你的生活是否如我所说呢 1.程序员一般待遇优厚, ...

最新文章

  1. bert-as-service使用
  2. Linux云服务器上python画图并保存
  3. 项目杂记——在后台获取Repeater控件里面的控件
  4. linux轻量级进程LWP
  5. Android微信界面的设计
  6. 计算机全息图的制作与在线,基于Matlab的计算全息图的制作与数字再现的研究精选.doc...
  7. Linux 解压 .tar.bz2文件
  8. [SQL] 不允许保存更改
  9. java虚拟内存不足
  10. js的延迟执行 async defer/ js的数据类型全/ null和undefined区别/=、==、===的区别/js中的宏任务和微任务js的作用域附带试题有答案
  11. 面向对象之多态以及进阶
  12. Docker--10张图带你深入理解Docker容器和镜像
  13. 手机在下载文件时乱码问题
  14. uni-app启动时间太长
  15. 2023年武汉大学艺术专硕考研上岸前辈初复试备考经验指导
  16. 光场视差与深度的关系(lytro深度计算公式)
  17. 怎样用计算机打出Abc,智能ABC输入法中的一些使用技巧
  18. 图像处理 去模糊 去马赛克 软件
  19. 苏大计算机考研复试没过调剂,差一分的遗憾,调剂给你补回来
  20. 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除

热门文章

  1. keil MDK启动文件分析---基于LPC2100系列(其实都是相通的)
  2. 解决 Xbox Series S/X 连接无线校园网的问题
  3. G-Snake Rana
  4. 巨杉分布式数据库在民生银行的使用
  5. 检验标准与计算机模拟,计算机模拟结题介绍.pptx
  6. Python限制input输入时间
  7. 【新】华为OD机试 - 数据分类(Python)| 刷完获取OD招聘渠道
  8. 邮箱客户端无法收发邮件-使用授权码/更换端口号解决
  9. 【三分/贪心/数学】装备合成
  10. 电路实验一阶电路误差分析_实验名称|SPWM逆变电路实验