Main.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import friends.*;
  2. import java.util.Collections;
  3. import java.util.ArrayList;
  4. import java.util.Comparator;
  5. import java.util.Random;
  6. public class Main {
  7. public static void main(String[] args) {
  8. // create normal list of friends
  9. ArrayList<Friend> friends = new ArrayList<Friend>();
  10. // populate with values
  11. for (Friend friend: Friend.values())
  12. friends.add(friend);
  13. System.out.println(" -- original list --");
  14. for (Friend friend: friends)
  15. System.out.print(String.format("-> %s (%d) ", friend.name(), friend.age()));
  16. System.out.println();
  17. ArrayList<Friend> sorted = new ArrayList<Friend>(friends.size());
  18. for (int i = 0; i < friends.size(); i++)
  19. sorted.add(null);
  20. // variant 1 - by ordinal
  21. for (int i = 0; i < friends.size(); i++) {
  22. Friend friend = friends.get(i);
  23. sorted.set(friend.ordinal(), friend);
  24. }
  25. System.out.println(" -- sorting by ordinal --");
  26. for (Friend friend: sorted)
  27. System.out.print(String.format("-> %s (%d) ", friend.name(), friend.age()));
  28. System.out.println();
  29. // variant 2 - by value (age)
  30. Collections.sort(sorted, new Comparator<Friend>() {
  31. @Override
  32. public int compare(Friend f1, Friend f2) {
  33. // compareTo alternative for age
  34. return (f1.age() > f2.age())
  35. ? 1 : (f1.age() < f2.age())
  36. ? -1 : 0;
  37. }
  38. });
  39. System.out.println(" -- sorting by age --");
  40. for (Friend friend: sorted)
  41. System.out.print(String.format("-> %s (%d) ", friend.name(), friend.age()));
  42. System.out.println();
  43. // variant 3 - by name
  44. Collections.sort(sorted, new Comparator<Friend>() {
  45. @Override
  46. public int compare(Friend f1, Friend f2) {
  47. return f1.name().compareTo(f2.name());
  48. }
  49. });
  50. System.out.println(" -- sorting by name --");
  51. for (Friend friend: sorted)
  52. System.out.print(String.format("-> %s (%d) ", friend.name(), friend.age()));
  53. System.out.println();
  54. // variant 4 - swap 2 friends
  55. System.out.println(" -- swap 2 random friends --");
  56. // pick 2 random kids and print em
  57. Random random = new Random();
  58. int swap1 = random.nextInt(sorted.size());
  59. int swap2 = random.nextInt(sorted.size());
  60. System.out.println(String.format("swap %s (#%d) with %s (#%d)", sorted.get(swap1).name(), swap1 + 1, sorted.get(swap2).name(), swap2 + 1));
  61. Friend temp = sorted.get(swap1);
  62. sorted.set(swap1, sorted.get(swap2));
  63. sorted.set(swap2, temp);
  64. for (Friend friend: sorted)
  65. System.out.print(String.format("-> %s (%d) ", friend.name(), friend.age()));
  66. }
  67. }