java中倒序数组_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","cake" };

System.out.println("\t" + Arrays.toString(strings));

List 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","cake" };

System.out.println("\t" + Arrays.toString(strings));

// 这种方式仅针对引用类型,对于基本类型如:

// char[] cs = {'a','b','c','g','d'};

// 应该定义或转换成对应的引用类型:

// Character[] cs = {'a','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 the generic type

* @param clazz the clazz

* @param methodName the method name

*/

public void recordTime(Class 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工具类反转数组元素更简单,但是在原数组上操作时速度更快,并且占用最少的内存.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

相关文章

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java解析JavaScript数组,可以使用Java的Nashorn引擎来执行JavaScript代码,然后将结果转换为Java数组对象。 以下是一个示例代码,演示如何在Java解析JavaScript数组: ```java import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Main { public static void main(String[] args) { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); String jsCode = "var arr = [1, 2, 3]; arr;"; try { Object result = engine.eval(jsCode); if(result instanceof jdk.nashorn.api.scripting.ScriptObjectMirror) { jdk.nashorn.api.scripting.ScriptObjectMirror array = (jdk.nashorn.api.scripting.ScriptObjectMirror) result; if(array.isArray()) { Object[] javaArray = array.values().toArray(); for(Object o : javaArray) { System.out.println(o); } } } } catch (ScriptException e) { e.printStackTrace(); } } } ``` 在这个示例,我们使用Nashorn引擎执行JavaScript代码,并将结果转换为Java数组对象。我们首先定义一个JavaScript数组,然后将其作为字符串传递给引擎的eval方法。引擎返回一个ScriptObjectMirror对象,在该对象上我们可以调用isArray方法来检查它是否是一个数组。如果是一个数组,我们可以调用values方法将其转换为Java数组对象,并遍历该数组以打印其内容。 希望这个示例可以帮助你解析JavaScript数组并将其转换为Java数组对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值