如何在此代码中仅使用Array的一个实例?

时间:2018-11-05 02:48:56

标签: java

这个问题很愚蠢。但是有人可以向我解释为什么我不能对2种方法使用相同的数组int [] a1吗?

假设我有一个 ArrayObject

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

public class ArrayObject implements ArrayFunctions {

    private int[] arr;

    public ArrayObject(int[] arr) {
        super();
        this.arr = arr;
    } 


    @Override
    public int[] sortAsc() {
        Arrays.sort(arr);
        return arr;
    }


    @Override
    public int[] sortDesc() {
        int temp;
        int size = arr.length;
        for (int i = 0; i < size/2; i++)
          {
             temp = arr[i];
             arr[i] = arr[size-1 - i];
             arr[size-1 - i] = temp;
          }
        return arr;
    }
}

然后进入

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int[] a1 = {2,9,45,7,46,35,89,12,456,12,5,35,4,98,34};

        ArrayObject arr1 = new ArrayObject(a1);
        ArrayObject arr2 = new ArrayObject(a1);

        int[] sortedArray = arr1.sortAsc();
        int[] sortDescArray = arr2.sortDesc();

        System.out.println(Arrays.toString(sortedArray));
        System.out.println(Arrays.toString(sortDescArray));

    }

}

结果是:

[456,98,89,46,45,35,35,34,12,12,9,9,7,4,4,2]

[456,98,89,46,45,35,35,34,12,12,9,9,7,4,4,2]

如何在不使用相同元素制作新数组的情况下将int [] a1数组用于两种数组排序方法?

根据我的代码

ArrayObject arr2 = new ArrayObject(a1);

ArrayObject的另一个实例是否将创建与 arr1 相同元素的全新数组?

请帮助!

1 个答案:

答案 0 :(得分:1)

现在是模拟时间:

如果杰克有一个1加仑的水桶,则可以用一加仑的啤酒装满它,也可以用一加仑的苹果酒装满它。但是杰克不能同时用一加仑啤酒和一加仑苹果酒装满他的一加仑水桶。

与之类似,杰克可以用棍子搅拌桶中的物品,使其沿顺时针或逆时针方向旋转。但是杰克不能同时使啤酒/苹果酒/水/任何东西同时向两个方向旋转。

当杰克和吉尔拿着{<3}}离开他们的水桶 1 回来时,它仍然只是一个水桶,最多只能容纳一加仑……尽管事实上杰克和吉尔都是两者都同时握住手柄。


数组就像一个桶。如果您有一个由两个ArrayObject实例共享的数组,则它仍然只是一个数组。可以按升序或降序排序...但不能同时 2

1-...啤酒:他们是这个故事版本的大学生。

2-...除非所有数组元素值都相同。