java - 在java中链接对象引用

标签 java arrays

所以我正在用java做这个项目,其中对象a有一个数组a。然后,将数组的一部分分配给另一个对象 s,这样更改 s 中的值就会更改 a 中的值。我正在为此绞尽脑汁,但我就是不明白。我缺少一些概念。

public class IntArray implements IntSequence {

int[] a;

public IntArray(int size) {
    a = new int[size];
}

public int length() {
}

public int get(int index) {
    return a[index];
}

public void set(int index, int value) {
    a[index] = value;
}

public IntSequence subSequence(int index, int size) {
}

public static void main(String[] args) {
    IntSequence a = new IntArray(5);
    a.set(0, 11);
    a.set(1, 22);
    a.set(3, 33);
    // some more values

    IntSequence s = a.subSequence(2, 2);
    s.set(0, 100);
    s.set(1, 200);

    System.out.println(a.get(2)); // prints 100. 

    }
}


public interface IntSequence {
int length();

int get(int index);

void set(int index, int value);

IntSequence subSequence(int index, int size);
}

有人可以给我一个正确的方向吗?谢谢。

最佳答案

有多种方法可以做到这一点。

我认为最简单的方法是创建一个作为子序列的新类。

public class SubSequence implements IntSequence {
    private int[] a;
    private int start;
    private int size;

    public constructor(int[] arr, int start, int size) {
        this.a = arr;
        this.start = start;
        this.size = size;
    }

    public int get (int index){
        return a[start + index];
    }

    public IntSequence subSequence(int start, int size) { 
        return new SubSequence(a, start, size);
    }
    // And so on
}

另一种方法是返回一个匿名类。您必须将变量设为最终变量才能从匿名类访问它们。这稍微好一些,因为您不需要构造函数,您应该能够通过调用 subSequence 方法从现有列表创建列表。

public IntSequence subSequence(final int start, final int size) {

    return new IntSequence() {
        public int length() {
            return size;
        }
        public int get(index) {
            return a[start + index ]
        }
        ... and so on
    }
}

此代码没有错误检查,您应该添加它以确保不会超出数组边界,

关于java - 在java中链接对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367764/

相关文章:

java - JTable - 删除行问题

java - java中多任务的任务调度?

java - 带有 jdbc applet 的 NoClassDefFoundError

java - 在开发环境数据存储中预加载数据的便捷方法

arrays - didSet 没有在每次突变时都被调用吗?

ruby-on-rails - Ruby:根据 block 查找条件删除并返回数组值

Java:将数据从服务器发送到监听套接字的所有客户端

c++ - iPhone 应用程序因 C++ 代码而崩溃

arrays - 从 Json 数组接收单个 URL

ios - obj-c 无法从搜索数组中找到索引/错误输出