Java程序员的日常—— Arrays工具类的使用
生活随笔
收集整理的这篇文章主要介绍了
Java程序员的日常—— Arrays工具类的使用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
这个类在日常的开发中,还是非常常用的。今天就总结一下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提供了很多的操作方法,更便于使用。
@Testpublic void test1(){List<String> lists = Arrays.asList(array);}sort排序和parallelSort并行排序
sort比较常用了,根据元素按照自然排序规则排序,也可以设置排序元素的起始位置。
@Testpublic 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
查找目标元素所在的位置,注意需要先进行排序。
@Testpublic void binarySearch(){//binarySearch需要保证是排好序的System.out.println(Arrays.binarySearch(array,"c"));//-6Arrays.sort(array);System.out.println(Arrays.binarySearch(array,"c"));//4}copyOf
拷贝数组,第一种用法,如果目标长度不够,会使用0进行补位。第二种用法,支持拷贝目标起始位置到结束为止的数组。
@Testpublic 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深度打印
这几个方法基本都是采用递归的写法使用。
@Testpublic 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比较
对比两个数组是否相等
@Testpublic void equals(){String[] array2 = new String[]{"a","c","2","1","b"};//1 对比引用是否相同//2 对比是否存在null//3 对比长度是否相同//4 挨个元素对比System.out.println(Arrays.equals(array,array2));}fill
基于目标元素填充数组
@Testpublic void fill(){Arrays.fill(array,"test");System.out.println(Arrays.deepToString(array));//[test, test, test, test, test]}toString
打印数组元素
@Testpublic void string(){System.out.println(Arrays.toString(array));//[a, c, 2, 1, b]}toStream
把数组转换成stream,然后可以使用java8的stream特性了。
@Testpublic void toStream(){Arrays.stream(array).forEach(s-> System.out.println(s));}parallelPrefix
这个有点像spark的reduceByKey,即根据传入的方法一次计算:
@Testpublic void parallelPrefix(){Arrays.parallelPrefix(ints,(x,y)->(x+y));System.out.println(Arrays.deepToString(ints));//[5, 6, 10, 13, 15]}parallelSetAll
这个方法相当于stream.map会挨个元素遍历执行方法
@Testpublic void parallelSetAll(){Arrays.parallelSetAll(ints,x->x*x);System.out.println(Arrays.toString(ints));//[0, 1, 4, 9, 16]}setAll
这个方法与上面类似,只不过不是并行的
@Testpublic void setAll(){Arrays.setAll(ints,x->x*2);System.out.println(Arrays.toString(ints));}转载于:https://www.cnblogs.com/xing901022/p/6224290.html
总结
以上是生活随笔为你收集整理的Java程序员的日常—— Arrays工具类的使用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: linux驱动之触摸屏驱动程序
- 下一篇: 201521123091 《Java程序