Java如何返回两个数组

Java是一种面向对象的编程语言,它提供了丰富的数据结构和操作方法,包括数组。在某些情况下,我们可能需要从一个方法中返回两个数组。本文将介绍几种方法来解决这个问题,并提供示例代码。

问题描述

假设我们需要编写一个方法,该方法接收一个整数数组作为参数,并返回两个数组:一个包含所有的奇数,另一个包含所有的偶数。我们可以将这个问题视为从一个方法中返回两个相关但不同类型的数组的问题。

方法一:使用自定义类

我们可以创建一个自定义类,它包含两个数组作为成员变量,并在方法中创建该类的对象来返回这两个数组。

public class ArrayPair {
    private int[] oddArray;
    private int[] evenArray;

    public ArrayPair(int[] oddArray, int[] evenArray) {
        this.oddArray = oddArray;
        this.evenArray = evenArray;
    }

    public int[] getOddArray() {
        return oddArray;
    }

    public int[] getEvenArray() {
        return evenArray;
    }
}

public class Main {
    public static ArrayPair separateArrays(int[] nums) {
        int[] oddArray = new int[nums.length];
        int[] evenArray = new int[nums.length];
        int oddIndex = 0;
        int evenIndex = 0;

        for (int num : nums) {
            if (num % 2 == 0) {
                evenArray[evenIndex++] = num;
            } else {
                oddArray[oddIndex++] = num;
            }
        }

        int[] trimmedOddArray = new int[oddIndex];
        int[] trimmedEvenArray = new int[evenIndex];
        System.arraycopy(oddArray, 0, trimmedOddArray, 0, oddIndex);
        System.arraycopy(evenArray, 0, trimmedEvenArray, 0, evenIndex);

        return new ArrayPair(trimmedOddArray, trimmedEvenArray);
    }

    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        ArrayPair result = separateArrays(nums);
        System.out.println("Odd Array: " + Arrays.toString(result.getOddArray()));
        System.out.println("Even Array: " + Arrays.toString(result.getEvenArray()));
    }
}

上述代码中,我们定义了一个名为ArrayPair的类,它有两个成员变量oddArray和evenArray分别用于存储奇数和偶数。在separateArrays方法中,我们迭代给定的nums数组,将奇数和偶数分别存储在对应的数组中。然后,我们使用System.arraycopy方法创建一个修剪过的奇数数组和偶数数组。最后,在main方法中调用separateArrays方法,并打印返回的结果。

方法二:使用Map

另一种方法是使用Map来存储两个数组。我们可以使用"odd"和"even"作为键,将奇数和偶数数组作为值存储在Map中,并返回该Map。

public class Main {
    public static Map<String, int[]> separateArrays(int[] nums) {
        Map<String, int[]> resultMap = new HashMap<>();
        List<Integer> oddList = new ArrayList<>();
        List<Integer> evenList = new ArrayList<>();

        for (int num : nums) {
            if (num % 2 == 0) {
                evenList.add(num);
            } else {
                oddList.add(num);
            }
        }

        resultMap.put("odd", oddList.stream().mapToInt(Integer::intValue).toArray());
        resultMap.put("even", evenList.stream().mapToInt(Integer::intValue).toArray());

        return resultMap;
    }

    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        Map<String, int[]> result = separateArrays(nums);
        System.out.println("Odd Array: " + Arrays.toString(result.get("odd")));
        System.out.println("Even Array: " + Arrays.toString(result.get("even")));
    }
}

上述代码中,我们创建了一个名为resultMap的Map对象,并使用"odd"和"even"作为键来存储奇数和偶数数组。在separateArrays方法中,我们使用List来收集奇数和偶数,并将其转换为int数组。最后,在main方法中调用separateArrays方法,并打印返回的结果。

结论

本文介绍