Java程序员的日常—— Arrays工具类的使用
来源:互联网 发布:澳洲留学 知乎 编辑:程序博客网 时间:2024/06/05 14:21
学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:286945438 我们一起学Java!
这个类在日常的开发中,还是非常常用的。今天就总结一下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<String> 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的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:286945438 我们一起学Java!
1 2
- Java程序员的日常—— Arrays工具类的使用
- 黑马程序员:Java基础总结-----Arrays 数组的工具类
- Arrays工具类的使用
- 【java的Arrays工具类】
- Java-Arrays的工具类
- java的Arrays工具类
- 黑马程序员—JAVA数组工具类Arrays
- 黑马程序员—Java工具类(Collections、Arrays)
- JAVA——用于操作数组的工具类Arrays
- java语言基础(57)——Arrays工具类的概述和使用
- Java程序员的日常
- Java程序员的日常
- Java Arrays类的使用
- java Arrays类的使用
- 黑马程序员—Arrays工具类,数组的高级操作,基本数据类型包装类
- java的Arrays工具类实战
- java 8 增强的工具类:Arrays
- Java中Arrays工具类的用法
- fgets()函数
- linux初学<习题一>如何用student用户登陆系统图形界面?
- 【考研】— 一起奋斗的日子
- Linux基础命令2
- 10点的
- Java程序员的日常—— Arrays工具类的使用
- Who Gets the Most Candies?
- MFC程序视图的显示
- spring mvc HttpMessageConverter使用
- gcc编译选项-Wl
- spring事务控制详解
- The content of elements must consist of well-formed character data or markup.
- 122425笔记
- Shader 介绍