Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/52: Рейтинг темы: голосов - 52, средняя оценка - 5.00
Gerbasha
6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
1

Копирование массивов

02.10.2012, 23:47. Просмотров 9603. Ответов 9
Метки нет (Все метки)

Необходимо в один момент скопировать данные из одного массива в другой.
для измененение данных в втором, чтобы в первом данные не менялись.
thinkBoard=Play.board;
как сделать это вернно?
Масив двумерный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 23:47
Ответы с готовыми решениями:

Копирование массивов
Задача такая. Есть Object object. На самом деле в нем лежит массив, причем...

Копирование элементов одномерных массивов в двухмерную таблицу
Можно ли создать двух. масив и фиксировать длину его "подмассивов" ? Просто...

Копирование файлов
Здравствуйте! мне необходимо написать программу которая копирует файлы из...

Многопоточное копирование
public class CopyThread extends Thread { File source; File...

Копирование в файл
Всем привет! У меня такая задача. Нужно скопировать содержимое одного файла в...

9
mutagen
2565 / 2238 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.10.2012, 01:46 2
Arrays.copyOf
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
03.10.2012, 13:12 3
Цитата Сообщение от mutagen Посмотреть сообщение
Arrays.copyOf
Только для одномерных. Попытка так скопировать двумерный приведет к тому, что по первому индексу копию сделает, а по остальным - нет.

Gerbasha, данные какого типа? Не объектные, случайно?
0
mutagen
2565 / 2238 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.10.2012, 13:15 4
Цитата Сообщение от Skipy Посмотреть сообщение
Только для одномерных.
упс верно, тогда сериализацией/десереализацией с наименьшей писаниной
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
03.10.2012, 14:59 5
Это если типы поддерживают сериализацию. Потому и интересуюсь содержимым.
0
Gerbasha
6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
03.10.2012, 20:43  [ТС] 6
нет данные простейшие float
0
mutagen
2565 / 2238 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.10.2012, 01:32 7
вот вам тогда клонер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Random;
 
public class FloatArray2DCloner implements Serializable {
    private static final long serialVersionUID = 2919017661809385476L;
    private float[][] arr;
 
    public FloatArray2DCloner() {
        super();
    }
    public FloatArray2DCloner(float[][] arr) {
        super();
        this.arr = arr;
    }
 
    public float[][] getArr() {
        return arr;
    }
 
    public void setArr(float[][] arr) {
        this.arr = arr;
    }
 
    public FloatArray2DCloner clone() {
        FloatArray2DCloner duplicate = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(this);
            oos.close();
 
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            ObjectInputStream ois = new ObjectInputStream(bais);
            duplicate = (FloatArray2DCloner) ois.readObject();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return duplicate;
 
    }
 
    static class Test {
        public static void main(String[] args) {
            Random rnd = new Random();
            float[][] f1 = new float[5][5];
            for (int i = 0; i < f1.length; i++) {
                for (int j = 0; j < f1[i].length; j++) {
                    f1[i][j] = rnd.nextFloat();
                }
            }
            
            FloatArray2DCloner array2dCloner = new FloatArray2DCloner(f1);
            float [][] f2 = array2dCloner.clone().getArr();
 
            f1[0][0] = 0;
            f1[1][0] = 0;
            f1[2][0] = 0;
            f1[3][0] = 0;
            f1[4][0] = 0;
            
            for (int i = 0; i < f1.length; i++) {
                System.out.println(Arrays.toString(f1[i]));
            }
            System.out.println("=========================");
            for (int i = 0; i < f2.length; i++) {
                System.out.println(Arrays.toString(f2[i]));
            }
        }
    }
}
0
exiqa
486 / 332 / 71
Регистрация: 24.12.2011
Сообщений: 591
04.10.2012, 12:52 8
а не проще ли для массива примитивов использовать Object#clone() ?
Java
1
2
3
4
5
6
7
float[][] array = .......;
        
float[][] clone = array.clone();
 
for (int i = 0; i < array.length; i++) {
    clone[i] = array[i].clone();
}
или тут есть какие то тонкости?
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
04.10.2012, 13:21 9
Да тонкостей-то никаких. Кроме того, что сериализация склонирует массив любой структуры и размерности. Для примера предлагаю Вам написать код для клонирования хотя бы четырехмерного массива. Чтобы проникнуться, так сказать.
1
exiqa
486 / 332 / 71
Регистрация: 24.12.2011
Сообщений: 591
04.10.2012, 15:00 10
Цитата Сообщение от Skipy Посмотреть сообщение
Для примера предлагаю Вам написать код для клонирования хотя бы четырехмерного массива. Чтобы проникнуться, так сказать.
попробовал
Цитата Сообщение от exiqa Посмотреть сообщение
а не проще ли для массива примитивов использовать Object#clone() ?
не проще

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.Arrays;
 
 
public class ArraysFun {
 
    public static void main(String[] args) {
 
        float[][][][] fourDimArray = new float[2][3][4][5];
        
        // filling the array
        for (int i = 0; i < fourDimArray.length; i++) {
            for (int j = 0; j < fourDimArray[i].length; j++) {
                for (int k = 0; k < fourDimArray[i][j].length; k++) {
                    for (int m = 0; m < fourDimArray[i][j][k].length; m++) {
                        fourDimArray[i][j][k][m] = (float) Math.random();
                    }
                }
            }
        }
        
        // cloning the array
        float[][][][] clone = fourDimArray.clone();
        for (int i = 0; i < fourDimArray.length; i++) {
            for (int j = 0; j < fourDimArray[i].length; j++) {
                for (int k = 0; k < fourDimArray[i][j].length; k++) {
                    clone[i][j][k] = fourDimArray[i][j][k].clone();
                }
            }
        }
        
        System.out.println(Arrays.deepToString(fourDimArray));
        System.out.println(Arrays.deepToString(clone));
 
    }
 
}
0
04.10.2012, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2012, 15:00

Копирование массива
Недавно начал изучать Java по Хорстманну.

Копирование массива
Добрый день, уважаемые! Новичок, совсем ещё зелёный, только ещё учусь...

Копирование массива
Удалить из массива каждый третий элемент (копированием) public class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru