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

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()方法,直接反转字符序列。

方法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如何逆序输出  第1张

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

    • 字符串反转:StringBuilder.reverse()效率最高(时间复杂度 O(n))。
    • 大数组/集合:循环交换比新建集合更节省内存。
  3. Unicode字符
    包含代理对(如Emoji)的字符串,用StringBuilder可正确处理,手动遍历可能导致乱码。

  4. 并发安全
    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