Advertisement
lameski

Untitled

Jun 4th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 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.Scanner;
  7. import java.util.stream.Collectors;
  8. //rasporeduvac na zadaci
  9. /**
  10. * I Partial exam 2016
  11. */
  12. public class TaskSchedulerTest {
  13. public static void main(String[] args) {
  14. Scanner scanner = new Scanner(System.in);
  15. int n = scanner.nextInt();
  16. Task[] timeTasks = new Task[n];
  17. for (int i = 0; i < n; ++i) {
  18. int x = scanner.nextInt();
  19. timeTasks[i] = new TimedTask(x);
  20. }
  21. n = scanner.nextInt();
  22. Task[] priorityTasks = new Task[n];
  23. for (int i = 0; i < n; ++i) {
  24. int x = scanner.nextInt();
  25. priorityTasks[i] = new PriorityTask(x);
  26. }
  27. Arrays.stream(priorityTasks).forEach(System.out::println);
  28. TaskRunner<Task> runner = new TaskRunner<>();
  29. System.out.println("=== Ordered tasks ===");
  30. System.out.println("Timed tasks");
  31. runner.run(Schedulers.getOrdered(), timeTasks);
  32. System.out.println("Priority tasks");
  33. runner.run(Schedulers.getOrdered(), priorityTasks);
  34. int filter = scanner.nextInt();
  35. System.out.printf("=== Filtered time tasks with order less then %d ===\n", filter);
  36. runner.run(Schedulers.getFiltered(filter), timeTasks);
  37. System.out.printf("=== Filtered priority tasks with order less then %d ===\n", filter);
  38. runner.run(Schedulers.getFiltered(filter), priorityTasks);
  39. scanner.close();
  40. }
  41. }
  42.  
  43. class TaskRunner <T> {
  44. public void run(TaskScheduler<T> scheduler, T[] tasks) {
  45. List<T> order = scheduler.schedule(tasks);
  46. order.forEach(System.out::println);
  47. }
  48. }
  49.  
  50. interface TaskScheduler<T>
  51. {
  52. public List<T> schedule(T[] c);
  53. }
  54.  
  55. interface Task {
  56. //dopolnete ovde
  57. public int getOrder();
  58. }
  59.  
  60. class PriorityTask implements Task {
  61. private final int priority;
  62.  
  63. public PriorityTask(int priority) {
  64. this.priority = priority;
  65. }
  66.  
  67.  
  68. @Override
  69. public String toString() {
  70. return String.format("PT -> %d", getOrder());
  71. }
  72.  
  73.  
  74. @Override
  75. public int getOrder() {
  76. // TODO Auto-generated method stub
  77. return priority;
  78. }
  79. }
  80.  
  81. class TimedTask implements Task {
  82. private final int time;
  83.  
  84. public TimedTask(int time) {
  85. this.time = time;
  86. }
  87.  
  88.  
  89. @Override
  90. public String toString() {
  91. return String.format("TT -> %d", getOrder());
  92. }
  93.  
  94.  
  95. @Override
  96. public int getOrder() {
  97. return time;
  98. }
  99. }
  100.  
  101. class Schedulers {
  102. public static <T> TaskScheduler<T> getOrdered() {
  103.  
  104. // vashiot kod ovde (annonimous class)
  105. return new TaskScheduler<T>() {
  106.  
  107. @Override
  108. public List<T> schedule(T[] c) {
  109. // TODO Auto-generated method stub
  110. List<T> list = new ArrayList<T>();
  111. for(T t: c)
  112. {
  113. list.add(t);
  114. }
  115. Collections.sort(list,new Comparator<T>() {
  116. @Override
  117. public int compare(T o1, T o2) {
  118. // TODO Auto-generated method stub
  119. Task a = (Task)o1;
  120. Task b = (Task)o2;
  121. return Integer.compare(a.getOrder(), b.getOrder());
  122. }
  123. });
  124. return list;
  125. }
  126. };
  127.  
  128. }
  129.  
  130. public static <T> TaskScheduler<T> getFiltered(int order) {
  131.  
  132. TaskScheduler<T> ts = tasks -> {
  133. List<T> list = new ArrayList<>();
  134.  
  135. for(T t : tasks)
  136. {
  137. list.add(t);
  138. }
  139. return list.stream()
  140. .map(t -> (Task) t)
  141. .filter(t -> Integer.compare(t.getOrder(), order)<0)
  142. .map(t -> (T)t)
  143. .collect(Collectors.toList());
  144. };
  145. return ts;
  146.  
  147. // vashiot kod ovde (lambda expression)
  148.  
  149. }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement