From 2170ea7dd608322209fcc5962ad993a850e01b08 Mon Sep 17 00:00:00 2001 From: BugWriterZhao <1012291737@qq.com> Date: Mon, 6 Nov 2017 16:36:10 +0800 Subject: [PATCH] Some files. --- res/FilmExamples/FilmExample.java | 87 +++++++++++++++++++++++++++++ res/FilmExamples/FilmExample2.java | 85 ++++++++++++++++++++++++++++ res/FilmExamples/FilmExample3.java | 90 ++++++++++++++++++++++++++++++ res/FilmExamples/FilmExample4.java | 77 +++++++++++++++++++++++++ 4 files changed, 339 insertions(+) create mode 100644 res/FilmExamples/FilmExample.java create mode 100644 res/FilmExamples/FilmExample2.java create mode 100644 res/FilmExamples/FilmExample3.java create mode 100644 res/FilmExamples/FilmExample4.java diff --git a/res/FilmExamples/FilmExample.java b/res/FilmExamples/FilmExample.java new file mode 100644 index 0000000..a4b8000 --- /dev/null +++ b/res/FilmExamples/FilmExample.java @@ -0,0 +1,87 @@ +import java.util.ArrayList; + +class Film { + private String title; + private String countries; + private int year; + private double billionRMB; + + // Constructor + public Film(String title, + String countries, + int year, + double billionRMB) { + this.title = new String(title); + this.countries = new String(countries); + this.year = year; + this.billionRMB = billionRMB; + } + + // Getter for the test + int getYear() { + return year; + } + + public String toString() { + return title + " (" + countries + " - " + year + ")" + + "\t" + Double.toString(billionRMB) + " billion RMB"; + } + +} + +// Interface defined for filtering +interface SelectFilm { boolean test(Film film);} + +public class FilmExample { + private static ArrayList films = new ArrayList(); + + static void loadFilms() { + // Chinese Box-Office, now outdated ("Wolf 2" well ahead, as well + // as "Never Say Die") + films.add(new Film("美人魚","China,Hong Kong",2016,3.393)); + films.add(new Film("The Fate of the Furious", + "United States",2017,2.651)); + films.add(new Film("捉妖记","China,Hong Kong",2015,2.440)); + films.add(new Film("Furious 7","United States",2015,2.427)); + films.add(new Film("Transformers: Age of Extinction", + "United States,China",2014,1.978)); + films.add(new Film("功夫瑜伽","China,India",2017,1.753)); + films.add(new Film("寻龙诀","China",2015,1.683)); + films.add(new Film("西游伏妖篇","China,Hong Kong",2017,1.657)); + films.add(new Film("港囧","China",2015,1.614)); + films.add(new Film("Zootopia","United States",2016,1.530)); + films.add(new Film("Warcraft","United States",2016,1.472)); + films.add(new Film("Avengers: Age of Ultron", + "United States",2015,1.464)); + films.add(new Film("夏洛特烦恼","China",2015,1.442)); + films.add(new Film("Jurassic World","United States",2015,1.421)); + films.add(new Film("Avatar","United States",2009,1.340)); + films.add(new Film("人再囧途之泰囧","China",2012,1.272)); + films.add(new Film("西游·降魔篇","China,Hong Kong",2013,1.247)); + films.add(new Film("Captain America: Civil War", + "United States",2016,1.246)); + films.add(new Film("西游记之孫悟空三打白骨精", + "China,Hong Kong",2016,1.201)); + films.add(new Film("湄公河行动","China,Hong Kong",2016,1.184)); + } + + static void showFilms(SelectFilm tester) { + for (Film f: films) { + if (tester.test(f)) { + System.out.println(f); + } + } + } + + public static void main(String args[]) { + loadFilms(); + System.out.println("\n2016 films"); + System.out.println("----------"); + showFilms(new SelectFilm() { + public boolean test(Film f) { + return f.getYear() == 2016; + } + }); + } +} + diff --git a/res/FilmExamples/FilmExample2.java b/res/FilmExamples/FilmExample2.java new file mode 100644 index 0000000..c0b7be5 --- /dev/null +++ b/res/FilmExamples/FilmExample2.java @@ -0,0 +1,85 @@ +// Same as FileExample.java, except that it uses a lambda expression +// instead of an anonymous object +import java.util.ArrayList; + +class Film { + private String title; + private String countries; + private int year; + private double billionRMB; + + // Constructor + public Film(String title, + String countries, + int year, + double billionRMB) { + this.title = new String(title); + this.countries = new String(countries); + this.year = year; + this.billionRMB = billionRMB; + } + + // Getter for the test + int getYear() { + return year; + } + + public String toString() { + return title + " (" + countries + " - " + year + ")" + + "\t" + Double.toString(billionRMB) + " billion RMB"; + } + +} + +// Interface defined for filtering +interface SelectFilm { boolean test(Film film);} + +public class FilmExample2 { + private static ArrayList films = new ArrayList(); + + static void loadFilms() { + // Chinese Box-Office, now outdated ("Wolf 2" well ahead, as well + // as "Never Say Die") + films.add(new Film("美人魚","China,Hong Kong",2016,3.393)); + films.add(new Film("The Fate of the Furious", + "United States",2017,2.651)); + films.add(new Film("捉妖记","China,Hong Kong",2015,2.440)); + films.add(new Film("Furious 7","United States",2015,2.427)); + films.add(new Film("Transformers: Age of Extinction", + "United States,China",2014,1.978)); + films.add(new Film("功夫瑜伽","China,India",2017,1.753)); + films.add(new Film("寻龙诀","China",2015,1.683)); + films.add(new Film("西游伏妖篇","China,Hong Kong",2017,1.657)); + films.add(new Film("港囧","China",2015,1.614)); + films.add(new Film("Zootopia","United States",2016,1.530)); + films.add(new Film("Warcraft","United States",2016,1.472)); + films.add(new Film("Avengers: Age of Ultron", + "United States",2015,1.464)); + films.add(new Film("夏洛特烦恼","China",2015,1.442)); + films.add(new Film("Jurassic World","United States",2015,1.421)); + films.add(new Film("Avatar","United States",2009,1.340)); + films.add(new Film("人再囧途之泰囧","China",2012,1.272)); + films.add(new Film("西游·降魔篇","China,Hong Kong",2013,1.247)); + films.add(new Film("Captain America: Civil War", + "United States",2016,1.246)); + films.add(new Film("西游记之孫悟空三打白骨精", + "China,Hong Kong",2016,1.201)); + films.add(new Film("湄公河行动","China,Hong Kong",2016,1.184)); + } + + static void showFilms(SelectFilm tester) { + for (Film f: films) { + if (tester.test(f)) { + System.out.println(f); + } + } + } + + public static void main(String args[]) { + loadFilms(); + System.out.println("\n2016 films"); + System.out.println("----------"); + showFilms((f) -> f.getYear() == 2016); + } +} + diff --git a/res/FilmExamples/FilmExample3.java b/res/FilmExamples/FilmExample3.java new file mode 100644 index 0000000..cf9f44a --- /dev/null +++ b/res/FilmExamples/FilmExample3.java @@ -0,0 +1,90 @@ +// Same as FileExample.java and FilmExample2.java, but no longer uses +// a user-defined interface but uses instead the built-in Predicate +// filter +import java.util.ArrayList; +import java.util.ListIterator; +import java.util.function.Predicate; + +class Film { + private String title; + private String countries; + private int year; + private double billionRMB; + + // Constructor + public Film(String title, + String countries, + int year, + double billionRMB) { + this.title = new String(title); + this.countries = new String(countries); + this.year = year; + this.billionRMB = billionRMB; + } + + // Getter for the test + int getYear() { + return year; + } + + public String toString() { + return title + " (" + countries + " - " + year + ")" + + "\t" + Double.toString(billionRMB) + " billion RMB"; + } + +} + +public class FilmExample3 { + private static ArrayList films = new ArrayList(); + + static void loadFilms() { + // Chinese Box-Office, now outdated ("Wolf 2" well ahead, as well + // as "Never Say Die") + films.add(new Film("美人魚","China,Hong Kong",2016,3.393)); + films.add(new Film("The Fate of the Furious", + "United States",2017,2.651)); + films.add(new Film("捉妖记","China,Hong Kong",2015,2.440)); + films.add(new Film("Furious 7","United States",2015,2.427)); + films.add(new Film("Transformers: Age of Extinction", + "United States,China",2014,1.978)); + films.add(new Film("功夫瑜伽","China,India",2017,1.753)); + films.add(new Film("寻龙诀","China",2015,1.683)); + films.add(new Film("西游伏妖篇","China,Hong Kong",2017,1.657)); + films.add(new Film("港囧","China",2015,1.614)); + films.add(new Film("Zootopia","United States",2016,1.530)); + films.add(new Film("Warcraft","United States",2016,1.472)); + films.add(new Film("Avengers: Age of Ultron", + "United States",2015,1.464)); + films.add(new Film("夏洛特烦恼","China",2015,1.442)); + films.add(new Film("Jurassic World","United States",2015,1.421)); + films.add(new Film("Avatar","United States",2009,1.340)); + films.add(new Film("人再囧途之泰囧","China",2012,1.272)); + films.add(new Film("西游·降魔篇","China,Hong Kong",2013,1.247)); + films.add(new Film("Captain America: Civil War", + "United States",2016,1.246)); + films.add(new Film("西游记之孫悟空三打白骨精", + "China,Hong Kong",2016,1.201)); + films.add(new Film("湄公河行动","China,Hong Kong",2016,1.184)); + } + + // Define showFilms using a Predicate (it's called "filter" + // in the lecture notes but it's exactly the same thing + static void showFilms(Predicate pred) { + Film f; + ListIterator iter = films.listIterator(); + while (iter.hasNext()) { + f = iter.next(); + if (pred.test(f)) { + System.out.println(f); + } + } + } + + public static void main(String args[]) { + loadFilms(); + System.out.println("\n2016 films"); + System.out.println("----------"); + showFilms((f) -> f.getYear() == 2016); + } +} + diff --git a/res/FilmExamples/FilmExample4.java b/res/FilmExamples/FilmExample4.java new file mode 100644 index 0000000..13650ed --- /dev/null +++ b/res/FilmExamples/FilmExample4.java @@ -0,0 +1,77 @@ +// Bonus track: doing it with streams +import java.util.ArrayList; + +class Film { + private String title; + private String countries; + private int year; + private double billionRMB; + + // Constructor + public Film(String title, + String countries, + int year, + double billionRMB) { + this.title = new String(title); + this.countries = new String(countries); + this.year = year; + this.billionRMB = billionRMB; + } + + // Getter for the test + int getYear() { + return year; + } + + public String toString() { + return title + " (" + countries + " - " + year + ")" + + "\t" + Double.toString(billionRMB) + " billion RMB"; + } + +} + +public class FilmExample4 { + private static ArrayList films = new ArrayList(); + + static void loadFilms() { + // Chinese Box-Office, now outdated ("Wolf 2" well ahead, as well + // as "Never Say Die") + films.add(new Film("美人魚","China,Hong Kong",2016,3.393)); + films.add(new Film("The Fate of the Furious", + "United States",2017,2.651)); + films.add(new Film("捉妖记","China,Hong Kong",2015,2.440)); + films.add(new Film("Furious 7","United States",2015,2.427)); + films.add(new Film("Transformers: Age of Extinction", + "United States,China",2014,1.978)); + films.add(new Film("功夫瑜伽","China,India",2017,1.753)); + films.add(new Film("寻龙诀","China",2015,1.683)); + films.add(new Film("西游伏妖篇","China,Hong Kong",2017,1.657)); + films.add(new Film("港囧","China",2015,1.614)); + films.add(new Film("Zootopia","United States",2016,1.530)); + films.add(new Film("Warcraft","United States",2016,1.472)); + films.add(new Film("Avengers: Age of Ultron", + "United States",2015,1.464)); + films.add(new Film("夏洛特烦恼","China",2015,1.442)); + films.add(new Film("Jurassic World","United States",2015,1.421)); + films.add(new Film("Avatar","United States",2009,1.340)); + films.add(new Film("人再囧途之泰囧","China",2012,1.272)); + films.add(new Film("西游·降魔篇","China,Hong Kong",2013,1.247)); + films.add(new Film("Captain America: Civil War", + "United States",2016,1.246)); + films.add(new Film("西游记之孫悟空三打白骨精", + "China,Hong Kong",2016,1.201)); + films.add(new Film("湄公河行动","China,Hong Kong",2016,1.184)); + } + + public static void main(String args[]) { + loadFilms(); + System.out.println("\n2016 films"); + System.out.println("----------"); + films.stream() + .filter((f) -> f.getYear() == 2016) + .forEach(System.out::println); + // Could also be written + // .forEach((f) -> { System.out.println(f);}); + } +} + -- Gitee