Java如何逆序输出
- 后端开发
- 2025-06-15
- 8
字符串逆序
方法1:StringBuilder.reverse()
String original = "Hello"; String reversed = new StringBuilder(original).reverse().toString(); System.out.println(reversed); // 输出 "olleH"
原理:StringBuilder内置reverse()方法,直接反转字符序列。

方法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]
注意事项
-
不可变对象:

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

- 字符串反转: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