Java 数组元素倒序的三种方式
将数组元素反转有多种实现方式,这里介绍常见的三种.
- 直接数组元素对换
@Test
public void testReverseSelf() throws Exception {System.out.println("use ReverseSelf");String[] strings = { "ramer", "jelly", "bean", "cake" };System.out.println("\t" + Arrays.toString(strings));for (int start = 0, end = strings.length - 1; start < end; start++, end--) {String temp = strings[end];strings[end] = strings[start];strings[start] = temp;}System.out.println("\t" + Arrays.toString(strings));
}
- 使用ArrayList: ArrayList存入和取出的顺序是一样的,可以利用这里特性暂时存储数组元素.
@Test
public void testArrayList() throws Exception {System.out.println("use ArrayList method");String[] strings = { "ramer", "jelly", "bean", "cake" };System.out.println("\t" + Arrays.toString(strings));List<String> list = new ArrayList<>(strings.length);for (int i = strings.length - 1; i >= 0; i--) {list.add(strings[i]);}strings = list.toArray(strings);System.out.println("\t" + Arrays.toString(strings));
}
- 使用Collections和Arrays工具类
@Test
public void testCollectionsReverse() throws Exception {System.out.println("use Collections.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
public void testTimeDuration() throws Exception {recordTime(ArrayReverse.class,"testCollectionsReverse");recordTime(ArrayReverse.class,"testArrayList");recordTime(ArrayReverse.class,"testReverseSelf");
}private static String[] strings = new String[1000000];
{for (int i = 0; i < 1000000; i++) {strings[i] = String.valueOf(i);}
}
/*** 记录操作执行总时间.** @param <T> the generic type* @param clazz the clazz* @param methodName the method name*/
public <T> void recordTime(Class<T> clazz, String methodName) {long start = System.currentTimeMillis();System.out.println("start: " + start);Method[] declaredMethods = clazz.getDeclaredMethods();for (Method method : declaredMethods) {String name = method.getName();if (name.equals(methodName)) {try {method.invoke(clazz.newInstance());} catch (Exception e) {e.printStackTrace();}}}long end = System.currentTimeMillis();System.out.println("end: " + end);System.out.println("duration: " + (end - start) + " ms");
}
测试结果:
使用Collections和Arrays工具类: 12 ms
使用ArrayList: 7 ms
直接数组元素对换: 4 ms
当数据量越来越大时,使用ArrayList的方式会变得很慢.
直接使用数组元素对换,总是最快完成.总结: 使用Collections和Arrays工具类反转数组元素更简单,但是在原数组上操作时速度更快,并且占用最少的内存.
Java 数组元素倒序的三种方式相关推荐
- 转list_你知道Java数组转List的三种方式及对比吗?
前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析. 一.最常见方式(未必最佳) 通过 Arrays.asList(strArray ...
- Java 数组转 List 的三种方式及对比
来源 | blog.csdn.net/x541211190/article/details/79597236 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的 ...
- Java数组转List的三种方式及对比
前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析. 一.最常见方式(未必最佳) 通过 Arrays.asList(strArray ...
- JAVA 数组的输出的三种方式
定义一个数组: int nums[] = {1,8,6,7,3,5,4}; 第一种:利用Array类中的toString方法 调用Array.toString(a),返回一个包含数组元素的字符串,这些 ...
- android double转string_Java 数组转 List 的三种方式及对比
来源:Java数组转List的三种方式及对比_五道口-CSDN博客 作者:大脑补丁 前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解 ...
- java数组转List的几种方式
目录 java数组转List的几种方式 方式一:Arrays.asList(); 方式二:new ArrayList<>(Arrays.asList()) 方式三:Collections. ...
- Java 数组转List的四种方式
Java 数组转List的四种方式 第一种方式(未必最佳):使用ArrayList.asList(strArray) 使用Arrays工具类Arrays.asList(strArray)方式,转换 ...
- 元素隐藏的三种方式对比(针对移动端项目中的按钮,先隐藏且不能被点击 visibility:hidden)
元素隐藏的三种方式对比 display:none opacity:0 visibility:hidden 项目需求 表面一个图片遮罩,鼠标hover遮罩消失,内部元素展现,其中有一个按钮在移动端是手指 ...
- Java中实现接口的三种方式您造吗?
本文介绍了Java中实现接口的三种方式:常规实现方式.匿名内部类和 Lambda表达式实现方式.希望已经了解的同学可以重新温习一下,不了解的同学则从中受益! Java中接口最常规的实现方式 同学们都会 ...
最新文章
- Dev-Cpp\MinGW64\x86_64-w64-mingw32\include
- JDK源码解析之集合篇2--Collection
- 五本必读的深度学习圣经书籍,入门 AI 从 深度学习 开始
- Oracle 联机重做日志文件(ONLINE LOG FILE)
- 前端学习(2460):粉丝管理
- Linux. C语言中else,2. if/else语句
- MSN Messenger去广告和其他修改方法
- 软件测试基础学习笔记
- 人工智能商用成果落地撬动AI未来
- VS2015导出带文件的项目模板
- 《Java程序员,上班那点事儿》荣登北京新华书店销售榜第2名,立贴纪念!
- SAP中采购申请PR与采购订单PO的关联性问题
- C++ 变量的生存期
- uni-app如何使用vant-ui
- 怎么用c语言算二进制位数,C语言位段的应用:统计二进制的位数
- 校园二手市场开题报告范文
- Android中的数据存储
- 【图像处理通道分离去除印章】
- Excel NORMINV函数用法
- 制造业产品开发中应用敏捷Scrum的思考 (下篇)