From 67280ac2cd47a6c3974777435d397654f4290b18 Mon Sep 17 00:00:00 2001 From: Lisa Date: Fri, 24 May 2019 15:47:31 +0200 Subject: [PATCH] improvements 7 --- src/main/java/_7/_1/LambdaTest.java | 21 ++- src/main/java/_7/_2/StreamTest.java | 13 +- src/main/java/_7/_3/PersonTest.java | 220 +++++++++++++++------------- 3 files changed, 128 insertions(+), 126 deletions(-) diff --git a/src/main/java/_7/_1/LambdaTest.java b/src/main/java/_7/_1/LambdaTest.java index 67271da..b970cf0 100644 --- a/src/main/java/_7/_1/LambdaTest.java +++ b/src/main/java/_7/_1/LambdaTest.java @@ -3,27 +3,26 @@ package _7._1; public class LambdaTest { public static void main(String[] args) { - Function id = (x) -> x; + Function id = (x) -> x; - Function inverse = (x) -> x*-1; + Function inverse = (x) -> -x; - Function timesTen = (x) -> x*10; + Function timesTen = (x) -> 10*x; - Function divideByPi = (x) -> x/Math.PI; - - Function round = Math::round; + Function divideByPi = (x) -> x/Math.PI; + Function round = Math::round; @SuppressWarnings("unchecked") - Function chain = makeChain(new Function[] {inverse, id, timesTen, divideByPi}); + Function chain = makeChain(new Function[]{ inverse, id, timesTen, divideByPi }); - System.out.println(round.calculate((chain.calculate(5.5)))); + System.out.println(round.calculate(chain.calculate(5.5))); } private static Function makeChain(final Function[] functions) { - return (x) -> { - for (Function i : functions) { - x = i.calculate(x); + return (x) -> { + for (Function f : functions) { + x = f.calculate(x); } return x; }; diff --git a/src/main/java/_7/_2/StreamTest.java b/src/main/java/_7/_2/StreamTest.java index 020a21d..874a6ec 100644 --- a/src/main/java/_7/_2/StreamTest.java +++ b/src/main/java/_7/_2/StreamTest.java @@ -5,16 +5,7 @@ import java.util.stream.Stream; public class StreamTest { public static void main(String[] args) { Stream naturals = Stream.iterate(1, i -> i + 1); - - Stream integers = Stream.iterate(0, i -> { - int next; - if (i>0) { - next = i*(-1); - } else { - next = i*(-1)+1; - } - return next; - }); + Stream integers = Stream.iterate(0, i -> i > 0 ? -i : -i + 1); System.out.println(filterAndSum(naturals)); System.out.println(filterAndSum(integers)); @@ -23,7 +14,7 @@ public class StreamTest { private static Integer filterAndSum(Stream stream) { return stream.filter((i) -> i % 2 == 0) .limit(10) - .reduce((a,b) -> a+b) + .reduce(Integer::sum) .orElse(0); } } diff --git a/src/main/java/_7/_3/PersonTest.java b/src/main/java/_7/_3/PersonTest.java index 21aa148..b458b1a 100644 --- a/src/main/java/_7/_3/PersonTest.java +++ b/src/main/java/_7/_3/PersonTest.java @@ -1,117 +1,129 @@ package _7._3; import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; class Person implements Serializable { - private String firstname; - private String lastname; - private transient String sortname; - - public Person() { } - public Person(String firstname, String lastname) { - this.firstname = firstname; - this.lastname = lastname; - updateSortname(); - } - public String getFirstname() { - return firstname; - } - public void setFirstname(String firstname) { - this.firstname = firstname; - updateSortname(); - } - public String getLastname() { - return lastname; - } - public void setLastname(String lastname) { - this.lastname = lastname; - updateSortname(); - } - public String getSortname() { - return sortname; - } - public void updateSortname() { - sortname = lastname + firstname; - } - - @Override - public String toString() { - return firstname + " " + lastname + " (" + sortname + ")"; - } - - - public static List load(String filename) throws IOException { - List people = new ArrayList<>(); - try (DataInputStream in = new DataInputStream(new BufferedInputStream( - new FileInputStream(filename)))) { - boolean nextExists = in.readBoolean(); - while (nextExists) { - people.add(load(in)); - nextExists = in.readBoolean(); - } - } - return people; - } - - public static Person load(DataInputStream in) throws IOException { - return new Person(in.readUTF(),in.readUTF()); - } - - - public static void save(String filename, List list) throws IOException { - try (DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filename)))) { - for (Person p : list) { - out.writeBoolean(true); - save(out, p); - } - out.writeBoolean(false); - } - } - - public static void save(DataOutputStream out, Person person) throws IOException { - out.writeUTF(person.getFirstname()); - out.writeUTF(person.getLastname()); - } - - - @SuppressWarnings("unchecked") - public static List unserialize(String filename) throws IOException, ClassNotFoundException { - List people; - try (ObjectInputStream in = new ObjectInputStream( - new BufferedInputStream(new FileInputStream(filename)))) { - people = (List) in.readObject(); - for (Person p : people) { - p.updateSortname(); - } - } - return people; - } - - public static void serialize(String filename, List persons) throws IOException { - try (ObjectOutputStream out = new ObjectOutputStream( - new BufferedOutputStream(new FileOutputStream(filename)))) { - out.writeObject(persons); - } - } + private String firstname; + private String lastname; + private transient String sortname; + + public Person() { + } + + public Person(String firstname, String lastname) { + this.firstname = firstname; + this.lastname = lastname; + updateSortname(); + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + updateSortname(); + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + updateSortname(); + } + + public String getSortname() { + return sortname; + } + + public void updateSortname() { + sortname = lastname + firstname; + } + + @Override + public String toString() { + return firstname + " " + lastname + " (" + sortname + ")"; + } + + + public static List load(String filename) throws IOException { + try(DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(filename)))) { + return loadAll(in); + } + } + + public static List loadAll(DataInputStream in) throws IOException { + int size = in.readInt(); + List persons = new ArrayList<>(); + for (int i = 0; i < size; i++) { + persons.add(load(in)); + } + return persons; + } + + public static Person load(DataInputStream in) throws IOException { + return new Person(in.readUTF(), in.readUTF()); + } + + public static void save(String filename, List list) throws IOException { + try(DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filename)))) { + saveAll(out, list); + } + } + + public static void saveAll(DataOutputStream out, List persons) throws IOException { + out.writeInt(persons.size()); + for (Person person : persons) { + save(out, person); + } + } + + public static void save(DataOutputStream out, Person person) throws IOException { + out.writeUTF(person.getFirstname()); + out.writeUTF(person.getLastname()); + } + + + @SuppressWarnings("unchecked") + public static List unserialize(String filename) throws IOException, ClassNotFoundException { + try (ObjectInputStream in = new ObjectInputStream( + new BufferedInputStream(new FileInputStream(filename)))) { + List people = (List) in.readObject(); + people.forEach(Person::updateSortname); + return people; + } + } + + public static void serialize(String filename, List persons) throws IOException { + try (ObjectOutputStream out = new ObjectOutputStream( + new BufferedOutputStream(new FileOutputStream(filename)))) { + out.writeObject(persons); + } + } } public class PersonTest { - public static void main(String[] args) throws IOException, ClassNotFoundException { - List persons = new ArrayList<>(); - persons.add(new Person("Willy", "Wonka")); - persons.add(new Person("Charlie", "Bucket")); - persons.add(new Person("Grandpa", "Joe")); - System.out.println(persons); - - Person.save("persons.sav", persons); - persons = Person.load("persons.sav"); - System.out.println(persons); - Person.serialize("persons.ser", persons); - persons = Person.unserialize("persons.ser"); - System.out.println(persons); - } + public static void main(String[] args) throws IOException, ClassNotFoundException { + List persons = new ArrayList<>(); + persons.add(new Person("Willy", "Wonka")); + persons.add(new Person("Charlie", "Bucket")); + persons.add(new Person("Grandpa", "Joe")); + System.out.println(persons); + + Person.save("persons.sav", persons); + persons = Person.load("persons.sav"); + System.out.println(persons); + Person.serialize("persons.ser", persons); + persons = Person.unserialize("persons.ser"); + System.out.println(persons); + } }