lameski

Blokova struktura_stream

Aug 20th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.stream.Collectors;
  3.  
  4. public class BlockContainerTest {
  5. public static void main(String[] args) {
  6. Scanner scanner = new Scanner(System.in);
  7. int n = scanner.nextInt();
  8. int size = scanner.nextInt();
  9. BlockContainer<Integer> integerBC = new BlockContainer<Integer>(size);
  10. scanner.nextLine();
  11. Integer lastInteger = null;
  12. for(int i = 0; i < n; ++i) {
  13. int element = scanner.nextInt();
  14. lastInteger = element;
  15. integerBC.add(element);
  16. }
  17. System.out.println("+++++ Integer Block Container +++++");
  18. System.out.println(integerBC);
  19. System.out.println("+++++ Removing element +++++");
  20. integerBC.remove(lastInteger);
  21. System.out.println("+++++ Sorting container +++++");
  22. integerBC.sort();
  23. System.out.println(integerBC);
  24. BlockContainer<String> stringBC = new BlockContainer<String>(size);
  25. String lastString = null;
  26. for(int i = 0; i < n; ++i) {
  27. String element = scanner.next();
  28. lastString = element;
  29. stringBC.add(element);
  30. }
  31. System.out.println("+++++ String Block Container +++++");
  32. System.out.println(stringBC);
  33. System.out.println("+++++ Removing element +++++");
  34. stringBC.remove(lastString);
  35. System.out.println("+++++ Sorting container +++++");
  36. stringBC.sort();
  37. System.out.println(stringBC);
  38. }
  39. }
  40.  
  41. //
  42. class BlockContainer<T extends Comparable<T>>
  43. {
  44. List<Set<T>> elements;
  45. int n;
  46. public BlockContainer(int n)
  47. {
  48. this.n = n;
  49. elements = new ArrayList<Set<T>>();
  50. }
  51.  
  52. public void add(T a)
  53. {
  54. if(elements.size() == 0)
  55. {
  56. Set<T> s = new TreeSet<>();
  57. s.add(a);
  58. elements.add(s);
  59. }
  60. else
  61. {
  62. Set<T> s = elements.get(elements.size()-1);
  63. if(s.size()<n)
  64. {
  65. s.add(a);
  66. }
  67. else
  68. {
  69. s = new TreeSet<T>();
  70. s.add(a);
  71. elements.add(s);
  72. }
  73. }
  74. }
  75.  
  76. public boolean remove(T a)
  77. {
  78. boolean res = false;
  79. if(elements.size()>0)
  80. {
  81. Set<T> s = elements.get(elements.size()-1);
  82.  
  83. res = s.remove(a);
  84. if(s.size()==0)
  85. elements.remove(elements.size()-1);
  86. }
  87. return res;
  88. }
  89. public void sort()
  90. {
  91. List<T> l = elements.stream()
  92. .flatMap(Collection::stream)
  93. .sorted()
  94. .collect(Collectors.toList());
  95.  
  96. elements = new ArrayList<Set<T>>();
  97. for(T e : l)
  98. {
  99. add(e);
  100. }
  101.  
  102. }
  103. @Override
  104. public String toString() {
  105. // TODO Auto-generated method stub
  106. StringBuilder sb = new StringBuilder();
  107.  
  108. for(Set<T> s: elements)
  109. {
  110. sb.append("[");
  111. for(T t : s)
  112. {
  113. sb.append(String.format("%s, ", t.toString()));
  114. }
  115. sb.delete(sb.toString().length()-2, sb.toString().length());
  116. sb.append("],");
  117. }
  118. sb.deleteCharAt(sb.toString().length()-1);
  119. return sb.toString();
  120. }
  121. }
Add Comment
Please, Sign In to add comment