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 */ public voidrecordTime(Class clazz,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工具类反转数组元素更简单,但是在原数组上操作时速度更快,并且占用最少的内存.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。