From efff8f0c3c423c2ab5c5229ce97b2e60ccffa538 Mon Sep 17 00:00:00 2001 From: "Task-1.1" Date: Sun, 27 Dec 2020 09:49:11 +0500 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BE=D0=B6=D0=BA=D0=BE=D0=B2=20=D0=9A?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8F=20=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=209.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/example/task02/SavedList.java | 68 ++++++++++++++++--- 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/09-java-generics-collections/task02/src/com/example/task02/SavedList.java b/09-java-generics-collections/task02/src/com/example/task02/SavedList.java index a4e2fb571..16541abc7 100644 --- a/09-java-generics-collections/task02/src/com/example/task02/SavedList.java +++ b/09-java-generics-collections/task02/src/com/example/task02/SavedList.java @@ -2,34 +2,86 @@ import java.io.File; import java.io.Serializable; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.AbstractList; +import java.util.ArrayList; +import java.util.Objects; -public class SavedList extends AbstractList { +public class SavedList extends AbstractList +{ + private final ArrayList list; + private final Path path; - public SavedList(File file) { + public SavedList(File file) + { + Objects.requireNonNull(file); + ArrayList tmp; + try (ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(file))) + { + tmp = (ArrayList) objectInputStream.readObject(); + if (tmp == null) { + tmp = new ArrayList<>(); + } + } catch (Exception exception) + { + System.err.println(exception.toString() + ". Creating new empty list..."); + tmp = new ArrayList<>(); + } + this.list = tmp; + this.path = file.toPath(); + + } + + private void sync() + { + try (ObjectOutputStream outputStream = new ObjectOutputStream(Files.newOutputStream(this.path))) + { + outputStream.writeObject(this.list); + } catch (IOException e) + { + e.printStackTrace(); + } } @Override - public E get(int index) { + public E get(int index) + { return null; + return this.list.get(index); } @Override - public E set(int index, E element) { + public E set(int index, E element) + { return null; + E elem = this.list.set(index, element); + this.sync(); + return elem; } @Override - public int size() { + public int size() + { return 0; + return this.list.size(); } @Override - public void add(int index, E element) { + public void add(int index, E element) + { + this.list.add(index, element); + this.sync(); } @Override - public E remove(int index) { - return null; + public E remove(int index) + { + E elem = this.list.remove(index); + this.sync(); + return elem; } } + +