не могу получить матрицу из вектора - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в Android Studio, и я пытался получить матрицу из вектора, изменить ее и вернуть обратно, но когда я увеличиваю матрицу, вектор автоматически меняет свое значение, откуда я взял матрицу... и я не могу понять, почему?Вот мой код:

Vector<int[][]> internalProces(int prNo, Vector<int[][]> vector)
    {
        int[][] matrix =new int[processNo][processNo];
        matrix=vector.lastElement();
        matrix[prNo][prNo]++;
        vector.add(matrix);
        return vector;
 }
    public void test(){
    Vector<int[][]> vector=new Vector<>();
    VectorClk vectorClock = new VectorClk(3);
    vector=vectorClock.initialize(vector);
    vector=vectorClock.internalProces(1,vector);        
}

Спасибо!

Отладчик

1 Ответ

0 голосов
/ 29 мая 2018

На шаге matrix=vector.lastElement(); вы должны сделать глубокую копию вместо ссылки на копию:

(из вашего кода я предполагаю, что ваш вектор состоит из двумерного массива с размерами processNo x processNo и processNo > prNo)

int[][] vectorElement = v.lastElement();
for (int i = 0; i< vectorElement.length; i++) {
    System.arraycopy(vectorElement[i], 0, matrix[i], 0, vectorElement[i].length);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...