Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558

Чтение объектов из файла

29.06.2014, 01:12. Показов 2927. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Сохраняю в файл массив объектов у которых есть связь с другим массивом объектов, немогу врубиться как мне вычитать объекты и восстановить второй массив объектов.
вот примерный код
классы
Java
1
2
3
4
5
6
7
8
9
class Worker implements Serializable{
    String name;
    Employee[] employees;
}
 
class Employee implements Serializable{
    String position;
    Worker worker;
}
создание массивов
Java
1
2
3
4
5
List workers = new ArrayList<Workers>();
/*adding objects*/
 
List employees = new ArrayList<Employee>();
/*adding objects*/
сохранение в файл
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*saving to file array of workers*/
public static void writeWorker(ArrayList<Worker> workers, String filePath) {
        try {
            Iterator<Worker> iterator = workers.iterator();
            ObjectOutputStream stream = new ObjectOutputStream(
                    new BufferedOutputStream(
                            new FileOutputStream(filePath)));
            while (iterator.hasNext()) {
                stream.writeObject(iterator.next());
            }
            stream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
при считывании файла я объекты поочередно запишу в массив workers, а как быть с массивом employees?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.06.2014, 01:12
Ответы с готовыми решениями:

Запись файла и чтение массива объектов класса Emloyee
Здравствуйте! Два дня бьюсь над записью в файл и чтения из файла массива объектов созданного программистом класса Emloyee. Поля класса -...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A Hulk Hogan , 100, M Duke Nukem, 50,...

Как заменить чтение строки из консоли на чтение текстового файла?
основное задание: найти частоту суффикса (например, &quot;ing&quot;) в текстовом документе. в прикреплённом коде текст вводится прямо в консоль,...

4
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
29.06.2014, 01:29
Как связанны оба массива?
0
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
29.06.2014, 09:17  [ТС]
както так
классы
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
class Worker implements Serializable{
    String name;
    Employee[] employees;
    
    Worker(String name){
        this.name=name;
    }
    public void addEmployee(Employee employee) {
        employees.add(employee);    //какойто код добавления элемента в массив...
    }
}
 
class Employee implements Serializable{
    String position;
    Worker worker;
    
    Employees(String position, Worker worker) {
        this.position=position;
        this worker=worker;
    }
    
    public void setWorker(Worker worker) {
        this.worker=worker;
    }
}
массивы
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
List workers = new ArrayList<Workers>();
workers.add(new Worker("Vasya"));
workers.add(new Worker("Petya"));
workers.add(new Worker("Grisha"));
workers.add(new Worker("Misha"));
 
List employees = new ArrayList<Employee>();
employees.add(new Employee("Director",workers[0]);
employees.add(new Employee("Manager",workers[1]);
employees.add(new Employee("Secretar",workers[2]);
employees.add(new Employee("Supervisor",workers[3]);
employees.add(new Employee("Janitor",workers[0]);
employees.add(new Employee("Driver",workers[2]);
 
workers[0].addEmployee(employees[0]);
workers[0].addEmployee(employees[4]);
workers[1].addEmployee(employees[1]);
workers[2].addEmployee(employees[2]);
workers[2].addEmployee(employees[5]);
workers[3].addEmployee(employees[3]);
может я чтото в корне не правильно делаю или чегото не понимаю, поправьте
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
29.06.2014, 10:04
поскольку в классе Workers (правильнее незывать классы в единственно числе) есть ссылка на Employee, после чтения из файла, вы можете пройти по коллекции работников и вытащить всех работодателей через getEmployees() однако при этом если у вас будет Employee у которого нет работника, то его вы конечно же потеряете.

Добавку обратной ссылки проще сделать в конструкторе Employee. Что-то вроде

Java
1
2
3
4
5
6
 Employees(String position, Worker worker) {
        this.position=position;
        this.worker=worker;
        this.worker.addEmployee(this)
 
    }
1
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
29.06.2014, 23:47  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
вы можете пройти по коллекции работников и вытащить всех работодателей через getEmployees()
ну вот об чемто таком у меня была мысль...мне получается не важно в каком порядке я буду их вычитывать из коллекции?) я так понимаю порядок изменится, но связи останутся
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2014, 23:47
Помогаю со студенческими работами здесь

Запись и чтение объектов в файл из ArrrayList
Подскажите как организовать чтение и запись в файл из ArrayList.

Чтение/запись объектов из файлов в несколько потоков
Здравствуйте. Есть N файлов. В них записаны объекты с помощью ObjectInputStream. Есть M потоков. Каждый из них должен делать...

Чтение объектов из файла
Пожалуйста, помогите с поиском ошибки. Суть - чтение объектов из файла, 3 столбца и n строк. Путем нехитрых манипуляций я понял, что,...

Чтение и запись объектов класса из файла
Создайте класс и его элементы в соответствии с вашим вариантом. Затем создайте объект класса и выведите его данные на экран. ...

Чтение из файла и создание объектов MFC
Rect MyRect; CPaintDC dc(this); char buff; int x1,x2,x3,x4,i=1; ifstream f(&quot;E\\data.txt&quot;); while(!f.eof()) { f&gt;&gt;buff;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru