Guest User

Untitled

a guest
Mar 22nd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.04 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.List;
  6. import java.util.function.Consumer;
  7. import java.util.stream.Collectors;
  8. import model.Character;
  9.  
  10. import static model.Character.Gender.*;
  11.  
  12. public class App {
  13.  
  14. private static List<Character> characters = Arrays.asList(new Character[] {
  15. new Character("First Doctor", 1963, "William Hartnell", MALE, "classic"),
  16. new Character("Second Doctor", 1966, "Patrick Troughton", MALE, "classic"),
  17. new Character("Third Doctor", 1970, "Jon Pertwee", MALE, "classic"),
  18. new Character("Fourth Doctor", 1974, "Tom Baker", MALE, "classic"),
  19. new Character("Fifth Doctor", 1981, "Peter Davison", MALE, "classic"),
  20. new Character("Sixth Doctor", 1984, "Colin Baker", MALE, "classic"),
  21. new Character("Seventh Doctor", 1987, "Sylvester McCoy", MALE, "classic"),
  22. new Character("Eighth Doctor", 1996, "Paul McGann", MALE, "TV film"),
  23. new Character("War Doctor", 2013, "John Hurt", MALE, "2005 show"),
  24. new Character("Ninth Doctor", 2005, "Christopher Eccleston", MALE, "2005 show"),
  25. new Character("Tenth Doctor", 2005, "David Tennant", MALE, "2005 show"),
  26. new Character("Eleventh Doctor", 2010, "Matt Smith", MALE, "2005 show"),
  27. new Character("Twelfth Doctor", 2013, "Peter Capaldi", MALE, "2005 show"),
  28. new Character("Thirteenth Doctor", 2017, "Jodie Whittaker", FEMALE, "2005 show"),
  29. new Character("River Song", 2008, "Alex Kingston", FEMALE, "2005 show"),
  30. new Character("Jack Harkness", 2005, "John Barrowman", MALE, "2005 show"),
  31. new Character("Rose Tyler", 2005, "Billie Piper", FEMALE, "2005 show"),
  32. new Character("Martha Jones", 2007, "Freema Agyeman", FEMALE, "2005 show"),
  33. new Character("Donna Noble", 2006, "Catherine Tate", FEMALE, "2005 show"),
  34. new Character("Amelia « Amy » Pond", 2010, "Karen Gillan", FEMALE, "2005 show"),
  35. new Character("Clara Oswald", 2010, "Jenna Coleman", FEMALE, "2005 show"),
  36. new Character("Nardole", 2015, "Matt Lucas", MALE, "2005 show"),
  37. new Character("Bill Potts", 2017, "Pearl Mackie", FEMALE, "2005 show")
  38. });
  39.  
  40. public static void main(String[] args) {
  41.  
  42.  
  43. //printAll()
  44.  
  45. //sortAndPrint();
  46.  
  47. //filterAndPrint();
  48.  
  49. filterSortAndPrint();
  50. }
  51.  
  52. private static void printAll() {
  53. System.out.println("--- Java 7");
  54. for(Character c : characters) {
  55. System.out.println(c);
  56. }
  57. System.out.println("--- Java 8");
  58. characters.forEach(new Consumer<Character>() {
  59. public void accept(Character c) {
  60. System.out.println(c);
  61. }
  62. });
  63.  
  64. System.out.println("--- Java 8 lambda");
  65. characters.forEach(c -> System.out.println(c));
  66.  
  67. System.out.println("--- Java 8 method reference");
  68. characters.forEach(System.out::println);
  69. }
  70.  
  71. private static void sortAndPrint() {
  72. System.out.println("--- Java 7");
  73.  
  74. System.out.println("------ Alphabetical Order");
  75. Collections.sort(characters,new Comparator<Character>() {
  76. @Override
  77. public int compare(Character c1, Character c2) {
  78. return c1.getName().compareTo(c2.getName());
  79. }
  80. });
  81. characters.forEach(System.out::println);
  82.  
  83. System.out.println("------ Apparition Order");
  84. Collections.sort(characters,new Comparator<Character>() {
  85. @Override
  86. public int compare(Character c1, Character c2) {
  87. return c1.getAppearanceYear() - c2.getAppearanceYear();
  88. }
  89. });
  90. characters.forEach(System.out::println);
  91.  
  92.  
  93. System.out.println("--- Java 8 lambda");
  94. System.out.println("------ Alphabetical Order");
  95. final Comparator<Character> compAlphaName = (c1,c2) -> c1.getName().compareTo(c2.getName());
  96. characters.sort(compAlphaName);
  97. characters.forEach(System.out::println);
  98. System.out.println("------ Apparition Order");
  99. characters.sort((c1,c2) -> c1.getAppearanceYear() - c2.getAppearanceYear());
  100. characters.forEach(System.out::println);
  101.  
  102.  
  103. System.out.println("--- Java 8 stream");
  104. System.out.println("------ Alphabetical Order");
  105. characters.stream()
  106. .sorted((c1,c2) -> c1.getName().compareTo(c2.getName()))
  107. .forEach(System.out::println);
  108. System.out.println("------ Apparition Order");
  109. characters.stream()
  110. .sorted((c1,c2) -> c1.getAppearanceYear() - c2.getAppearanceYear())
  111. .forEach(System.out::println);
  112. }
  113.  
  114. private static void filterAndPrint() {
  115. System.out.println("--- Java 7");
  116. System.out.println("------ Female characters");
  117. for(Character c : characters) {
  118. if(c.getGender() == FEMALE) {
  119. System.out.println(c.getName() + " " + c.getGender());
  120. }
  121. }
  122.  
  123. System.out.println("------ Characters appeared between 2005 and 2008");
  124. for(Character c : characters) {
  125. if(2005 <= c.getAppearanceYear() && c.getAppearanceYear() <= 2008) {
  126. System.out.println(c.getName() + " " + c.getAppearanceYear());
  127. }
  128. }
  129.  
  130. System.out.println("--- Java 8 simple stream");
  131. System.out.println("------ Female characters");
  132. characters.stream()
  133. .filter(c -> c.getGender() == FEMALE)
  134. .forEach(c -> System.out.println(c.getName() + " " + c.getGender()));
  135.  
  136. System.out.println("------ Characters appeared between 2005 and 2008");
  137. characters.stream()
  138. .filter(c -> 2005 <= c.getAppearanceYear())
  139. .filter(c -> c.getAppearanceYear() <= 2008)
  140. .forEach(c -> System.out.println(c.getName() + " " + c.getAppearanceYear()));
  141.  
  142. System.out.println("--- Java 8 stream and map");
  143. System.out.println("------ Female characters");
  144. characters.stream()
  145. .filter(c -> c.getGender() == FEMALE)
  146. .map(c -> c.getName() + " " + c.getGender())
  147. .forEach(System.out::println);
  148.  
  149. System.out.println("------ Characters appeared between 2005 and 2008");
  150. characters.stream()
  151. .filter(c -> 2005 <= c.getAppearanceYear())
  152. .filter(c -> c.getAppearanceYear() <= 2008)
  153. .map(c -> c.getName() + " " + c.getAppearanceYear())
  154. .forEach(System.out::println);
  155. }
  156.  
  157. private static void filterSortAndPrint() {
  158. filterSortAndPrintJava7();
  159. filterSortAndPrintJava8();
  160. }
  161.  
  162. private static void filterSortAndPrintJava7() {
  163. System.out.println("--- Java 7");
  164. System.out.println("------ Female characters");
  165. final Comparator<Character> compAlphaName = new Comparator<Character>() {
  166. @Override
  167. public int compare(Character c1, Character c2) {
  168. return c1.getName().compareTo(c2.getName());
  169. }
  170. };
  171. final List<Character> femaleCharacters = new ArrayList<>();
  172. characters.sort(compAlphaName);
  173. for(Character c : characters) {
  174. if(c.getGender() == FEMALE) {
  175. femaleCharacters.add(c);
  176. System.out.println(c.getName() + " " + c.getGender());
  177. }
  178. }
  179.  
  180. System.out.println("------ Characters appeared between 2005 and 2008");
  181. final Comparator<Character> compAppearanceYear = new Comparator<Character>() {
  182. @Override
  183. public int compare(Character c1, Character c2) {
  184. return c1.getAppearanceYear() - c2.getAppearanceYear();
  185. }
  186. };
  187. final List<Character> charactersAppearedBetween2005and2008 = new ArrayList<>();
  188. characters.sort(compAppearanceYear);
  189. for(Character c : characters) {
  190. if(2005 <= c.getAppearanceYear() && c.getAppearanceYear() <= 2008) {
  191. charactersAppearedBetween2005and2008.add(c);
  192. System.out.println(c.getName() + " " + c.getAppearanceYear());
  193. }
  194. }
  195.  
  196. System.out.println("------ Female characters appeared between 2005 and 2008");
  197. femaleCharacters.retainAll(charactersAppearedBetween2005and2008);
  198. femaleCharacters.sort(compAppearanceYear);
  199. for(Character c : femaleCharacters) {
  200. System.out.println(c.getAppearanceYear() + " " + c.getName() + " " + c.getGender());
  201. }
  202. }
  203.  
  204. private static void filterSortAndPrintJava8() {
  205. System.out.println("--- Java 8");
  206. System.out.println("------ Female characters");
  207. final Comparator<Character> compAlphaName = (c1,c2) -> c1.getName().compareTo(c2.getName());
  208. final List<Character> femaleCharacters = characters.stream()
  209. .filter(c -> c.getGender() == FEMALE)
  210. .collect(Collectors.toList());
  211.  
  212. femaleCharacters.stream()
  213. .sorted(compAlphaName)
  214. .forEach(c -> System.out.println(c.getName() + " " + c.getGender()));
  215.  
  216. System.out.println("------ Characters appeared between 2005 and 2008");
  217. final Comparator<Character> compAppearanceYear = (c1,c2) -> c1.getAppearanceYear() - c2.getAppearanceYear();
  218. final List<Character> charactersAppearedBetween2005and2008 = characters.stream()
  219. .filter(c -> 2005 <= c.getAppearanceYear() && c.getAppearanceYear() <= 2008)
  220. .collect(Collectors.toList());
  221.  
  222. charactersAppearedBetween2005and2008.stream()
  223. .sorted(compAppearanceYear)
  224. .forEach(c -> System.out.println(c.getName() + " " + c.getAppearanceYear()));
  225.  
  226. System.out.println("------ Female characters appeared between 2005 and 2008");
  227. charactersAppearedBetween2005and2008.stream()
  228. .filter(c -> femaleCharacters.contains(c))
  229. .sorted(compAppearanceYear)
  230. .forEach(c -> System.out.println(c.getAppearanceYear() + " " + c.getName() + " " + c.getGender()));
  231. }
  232. }
Add Comment
Please, Sign In to add comment