当前位置:首页 > 后端开发 > 正文

Java如何逆序输出

Java取逆序可通过多种方式实现:字符串使用 StringBuilder.reverse();数组通过倒序循环或 Collections.reverse()(需转为List);集合类直接调用 Collections.reverse(),核心思路为倒序索引或利用现成反转方法。

字符串逆序

方法1:StringBuilder.reverse()

String original = "Hello"; String reversed = new StringBuilder(original).reverse().toString(); System.out.println(reversed); // 输出 "olleH"

原理:StringBuilder内置reverse()方法,直接反转字符序列。

Java如何逆序输出 第1张

方法2:手动遍历交换

char[] chars = original.toCharArray(); int left = 0, right = chars.length - 1; while (left < right) { char temp = chars[left]; chars[left] = chars[right]; chars[right] = temp; left++; right--; } String reversed = new String(chars); // 输出 "olleH"

适用场景:需自定义反转逻辑(如部分反转)。


数组逆序

方法1:使用循环交换

int[] array = {1, 2, 3, 4}; for (int i = 0; i < array.length / 2; i++) { int temp = array[i]; array[i] = array[array.length - 1 - i]; array[array.length - 1 - i] = temp; } // 结果:{4, 3, 2, 1}

方法2:Collections.reverse()(需转为List)

Integer[] array = {1, 2, 3, 4}; // 注意:必须用包装类型 List<Integer> list = Arrays.asList(array); Collections.reverse(list); // 结果:{4, 3, 2, 1}


集合逆序(如ArrayList)

方法:Collections.reverse()

List<Integer> list = new ArrayList<>(Arrays.asList(10, 20, 30)); Collections.reverse(list); System.out.println(list); // 输出 [30, 20, 10]


注意事项

  1. 不可变对象

    Java如何逆序输出 第2张

    • 字符串本身不可变,反转后需赋值给新变量。
    • 基本类型数组需手动操作,对象数组可借助Collections。
  2. 性能考虑

    Java如何逆序输出 第3张

    • 字符串反转:StringBuilder.reverse()效率最高(时间复杂度 O(n))。
    • 大数组/集合:循环交换比新建集合更节省内存。
    • Unicode字符

      包含代理对(如Emoji)的字符串,用StringBuilder可正确处理,手动遍历可能导致乱码。

    • 并发安全

      Collections.reverse()修改原集合,多线程环境需加锁或用CopyOnWriteArrayList。

      • 字符串 → 首选StringBuilder.reverse()。
      • 数组 → 循环交换(基本类型)或Collections.reverse()(包装类型)。
      • 集合 → Collections.reverse()直接操作。
      • 复杂场景(如链表逆序)→ 可用递归或栈实现,需根据数据结构选择算法。

      引用说明:本文代码基于Oracle官方Java文档[^1][^2],方法均通过OpenJDK 17测试,字符串反转逻辑参考java.lang.StringBuilder源码[^3],集合操作遵循java.util.Collections规范[^4]。

      [^1]: Oracle Java SE Documentation

      [^2]: [Java StringBuilder.reverse()](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuilder.html#reverse())

      [^3]: Java Collections.reverse()

      [^4]: Unicode Handling in Java

0