java - 如何在这段代码中只使用一个数组实例?

标签 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、7、5、4、2]

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

如何在两种数组排序方法中重复使用数组 int[] a1,而不使用相同元素创建新数组?

基于我的代码,

ArrayObject arr2 = new ArrayObject(a1);

ArrayObject 的另一个实例会创建一个与 arr1 具有相同元素的全新数组吗?

请帮忙!

最佳答案

现在是类比时间:

如果 jack 有一个 1 加仑的桶,他可以装满一加仑啤酒,或者可以装满一加仑苹果酒。但 jack 无法同时向他的一加仑桶装满一加仑啤酒和一加仑苹果酒

同样, jack 可以用棍子搅拌桶中的内容物,使其顺时针或逆时针方向旋转。但 jack 无法让啤酒/苹果酒/水/任何东西同时向两个方向旋转。

当 jack 和吉尔从off-license回来时拿着他们的水桶1,它仍然只是一个最多装一加仑的水桶……尽管事实上 jack 和吉尔都同时握住了 handle 。

<小时/>

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

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

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

关于java - 如何在这段代码中只使用一个数组实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53147688/

相关文章:

java - JPQL 查询中的列表

java - 对象和数组列表

java - JAXB for lists 为 JSON 或 XML 自然返回

java - 如何使用泛型将重复的方法与具有包含相同类类型的不同 Java 集合的参数组合起来?

java - 使用第一个元素作为枢轴的快速排序

javascript - 可以从 JS 客户端获取 POST 请求的 Java 服务器

java - Hibernate查询表中不再存在的字段

java - 如何检查我的答案有多少位数?

java - 如何使用 JGit 获取存储库中文件的时间戳?

java - KafkaAvroDeserializer-NoClassDefFoundError : io/confluent/common/config/ConfigException