这个班在日常开发中还非常常用。 今天总结Arrays工具类的一般方法。 最常用的是asList、sort、toStream、equals、copyOf。 另外,可以深入学习Arrays的排序算法,这非常有用。
所有方法都是:将在以下类中进行测试
公共类阵列测试{
String[] array=new String[]{'a '、' c '、'2'、'1'、' b'};
integer [ ] ints=new integer [ ] { 5,1,4,3,2 };
.
}
As列表
该方法可以将数组转化为List,List提供了许多操作方法,使用方便。
@Test
公共语音测试1 () {
listlists=Arrays.aslist(Array );
}
sort排序和并行sort并行排序
sort比较常用,可以根据元素按照自然的排序规则进行排序,也可以设置排序元素的开始位置。
@Test
公共语音软件(
/*Arrays.sort(Array;
for (stringstr :阵列) {
system.out.println(str;
() /
Arrays.sort(Array,2,5 );
system.out.println (Arrays.deep tostring ) array ); //[a,c,1,2,b]
}
parallelSort使用并行排序算法进行排序。 但是,自己测试的时候,数据量太小,速度可能没有明显的变化。
二进制搜索
请注意,必须找到目标元素所在的位置,然后首先对其进行排序。
@Test
公共语音二进制搜索(
//二进制搜索需要确保排名
system.out.println (Arrays.binary search ) array,' c ' ); //-6
Arrays.sort(Array );
system.out.println (Arrays.binary search ) array,' c ' ); //4
}
复制关闭
复制数组。 第一种用法是在目标长度不够时使用0来补充位。 第二种用法支持复制目标从开始位置到结束的数组。
@Test
公共语音复印of () {
//位数不够的话,需要补缺
integer [ ] result=arrays.copy of (ints,10 );
for (inti :结果) {
system.out.println(I;
}
system.out.println------------------------------------------ -。
//位数足够的话,采取最小的排列
result=Arrays.copyof(ints,3 );
for (inti :结果) {
system.out.println(I;
}
system.out.println------------------------------------------ -。
//
result=Arrays.copyofrange(ints,2,4 );
for (inti :结果) {
system.out.println(I;
}
}
deepEquals深度比较、deepHashCode生成hashcode、deepToString深度打印
这些方法基本上是用递归的写法。
@Test
公共语音深度测试(
String[] array2=new String[]{'a '、' c '、'2'、'1'、' b'};
系统. out.println (arrays.deep equals (array,array2); //深度比较两个序列是否相同
system.out.println (Arrays.deep hashcode ) array );
system.out.println (arrays.deep hashcode ) Array2);//如果是两个序列deepEquals,他们的hashcode一定是一样的
//格式化输出数组
system.out.println (Arrays.deep tostring ) array );
}
equals比较
比较两个序列是否相等
@Test
公共语音质量(
String[] array2=new String[]{'a '、' c '、'2'、'1'、' b'};
//1比较参照是否相同
//2比较是否有空值
//3对比长度是否相同
//4与每个人的元素的对比
系统. out.println (arrays.equals (array,array2);
}
菲尔
根据目标元素填充数组
@Test
公共语音文件() {
Arrays.fill(Array,' test ' );
system.out.println (Arrays.deep tostring ) array ); //[test、test、test、test和test]
}
桁架环
打印数组元素
@Test
公共语音字符串(
系统. out.println (arrays.tostring (array ) ); //[a,c,2,1,b]
}
至流
现在可以将数组转换为流,并使用java8的流特性。
@Test
公共语音至流(
arrays.stream(array ).foreach (s-system.out.println ) );
}
平行前缀
这类似于spark的reduceByKey。 也就是说,它根据传入的方法一次计算。
@Test
公共语音并行前缀(
Arrays.parallelprefix(ints,(x,y )-(xy );
系统. out.println (arrays.deep tostring (ints ) ); //[ 5,6,10,13,15 ]
}
平行安装
此方法相当于stream.map按元素遍历执行方法
@Test
公共语音并行安装(
Arrays.Parallelsetall(ints,x-x*x );
系统. out.println (arrays.tostring (ints ) ); //[ 0,1,4,9,16 ]
}
设置全部
这个方法和上面相似,但不是并行的
@Test
公共语音集所有
Arrays.setall(ints,x-x*2);
系统. out.println (arrays.tostring (ints ) );
}