You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数组相邻元素交换:非Java风格实现及批量交换方法问询

批量交换数组相邻元素的简洁实现(贴近Python思路)

嗨,刚从Python转Java的话,确实会觉得Java有些写法偏“厚重”,不过完全可以用贴近Python思路的简洁方式实现批量交换相邻元素(第1&2、3&4、5&6...这样的成对交换)。

首先,先明确核心逻辑:和Python里的思路一致——按步长为2的索引遍历数组,每次交换当前索引和下一个索引的元素,同时注意数组长度为奇数时,最后一个元素不用处理。

方法一:简洁的传统循环(最接近Python的for循环写法)

这种写法没有多余的冗余代码,和Python的循环逻辑几乎一致:

import java.util.Arrays;

public class SwapAdjacentPairs {
    public static void swapAdjacent(int[] arr) {
        // 遍历索引0、2、4...,步长为2,确保i+1不越界
        for (int i = 0; i < arr.length - 1; i += 2) {
            // 交换arr[i]和arr[i+1],Java没有Python的元组直接交换,用临时变量是最稳妥的方式
            int temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
        }
    }

    public static void main(String[] args) {
        int[] evenArr = {1, 2, 3, 4, 5, 6};
        swapAdjacent(evenArr);
        System.out.println(Arrays.toString(evenArr)); // 输出 [2, 1, 4, 3, 6, 5]

        int[] oddArr = {10, 20, 30, 40, 50};
        swapAdjacent(oddArr);
        System.out.println(Arrays.toString(oddArr)); // 输出 [20, 10, 40, 30, 50]
    }
}

方法二:用Stream API实现更“Pythonic”的简洁写法

如果你习惯Python里的函数式风格,Java 8+的Stream API可以让代码更简洁,避免显式的循环结构:

import java.util.Arrays;
import java.util.stream.IntStream;

public class SwapAdjacentWithStream {
    public static void swapAdjacent(int[] arr) {
        // 遍历0到arr.length/2的索引,每个索引对应一对元素的起始位置
        IntStream.range(0, arr.length / 2)
                 .forEach(i -> {
                     int idx = i * 2;
                     int temp = arr[idx];
                     arr[idx] = arr[idx + 1];
                     arr[idx + 1] = temp;
                 });
    }

    public static void main(String[] args) {
        int[] arr = {7, 8, 9, 10};
        swapAdjacent(arr);
        System.out.println(Arrays.toString(arr)); // 输出 [8, 7, 10, 9]
    }
}

关键点说明

  • 两种方法都遵循了Python的核心思路:成对处理相邻元素,步长为2遍历索引
  • 不用担心数组越界:第一种方法用i < arr.length - 1确保i+1不会超出数组范围;第二种方法用arr.length / 2(整数除法),自动忽略奇数长度数组的最后一个元素
  • 不用拘泥于所谓的“Java式”写法,Java现在也支持很多简洁的风格,和Python的思维可以无缝衔接

内容的提问来源于stack exchange,提问作者Java lava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:20:26