Java 数组元素倒序的三种方式(小结)
将数组元素反转有多种实现方式,这里介绍常见的三种.
直接数组元素对换
@Test
publicvoidtestReverseSelf()throwsException{
System.out.println("useReverseSelf");
String[]strings={"ramer","jelly","bean","cake"};
System.out.println("\t"+Arrays.toString(strings));
for(intstart=0,end=strings.length-1;start
使用ArrayList:ArrayList存入和取出的顺序是一样的,可以利用这里特性暂时存储数组元素.
@Test
publicvoidtestArrayList()throwsException{
System.out.println("useArrayListmethod");
String[]strings={"ramer","jelly","bean","cake"};
System.out.println("\t"+Arrays.toString(strings));
Listlist=newArrayList<>(strings.length);
for(inti=strings.length-1;i>=0;i--){
list.add(strings[i]);
}
strings=list.toArray(strings);
System.out.println("\t"+Arrays.toString(strings));
}
使用Collections和Arrays工具类
@Test
publicvoidtestCollectionsReverse()throwsException{
System.out.println("useCollections.reverse()method");
String[]strings={"ramer","jelly","bean","cake"};
System.out.println("\t"+Arrays.toString(strings));
//这种方式仅针对引用类型,对于基本类型如:
//char[]cs={'a','b','c','g','d'};
//应该定义或转换成对应的引用类型:
//Character[]cs={'a','b','c','g','d'};
Collections.reverse(Arrays.asList(strings));
System.out.println("\t"+Arrays.toString(strings));
}
速度测试:
@Test
publicvoidtestTimeDuration()throwsException{
recordTime(ArrayReverse.class,"testCollectionsReverse");
recordTime(ArrayReverse.class,"testArrayList");
recordTime(ArrayReverse.class,"testReverseSelf");
}
privatestaticString[]strings=newString[1000000];
{
for(inti=0;i<1000000;i++){
strings[i]=String.valueOf(i);
}
}
/**
*记录操作执行总时间.
*
*@paramthegenerictype
*@paramclazztheclazz
*@parammethodNamethemethodname
*/
publicvoidrecordTime(Classclazz,StringmethodName){
longstart=System.currentTimeMillis();
System.out.println("start:"+start);
Method[]declaredMethods=clazz.getDeclaredMethods();
for(Methodmethod:declaredMethods){
Stringname=method.getName();
if(name.equals(methodName)){
try{
method.invoke(clazz.newInstance());
}catch(Exceptione){
e.printStackTrace();
}
}
}
longend=System.currentTimeMillis();
System.out.println("end:"+end);
System.out.println("duration:"+(end-start)+"ms");
}
测试结果:
使用Collections和Arrays工具类:12ms
使用ArrayList:7ms
直接数组元素对换:4ms
当数据量越来越大时,使用ArrayList的方式会变得很慢.
直接使用数组元素对换,总是最快完成.
总结:使用Collections和Arrays工具类反转数组元素更简单,但是在原数组上操作时速度更快,并且占用最少的内存.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。