Advertisement
Martina312

[НП] - Блоковска структура

Aug 23rd, 2020
2,017
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.82 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.stream.Collectors;
  3.  
  4. class Block<T extends Comparable<T>>{
  5.     int n; //max elementi vo blokot
  6.     Set<T> elements;
  7.  
  8.     public Block(int n) {
  9.         this.n = n;
  10.         this.elements = new TreeSet<>(T::compareTo);
  11.     }
  12.  
  13.     public void addElement(T element){
  14.         elements.add(element);
  15.     }
  16.  
  17.     public boolean isFull(){
  18.         return elements.size()==n;
  19.     }
  20.  
  21.     public boolean remove (T element){
  22.         return elements.remove(element);
  23.     }
  24.  
  25.     public Set<T> getElements() {
  26.         return elements;
  27.     }
  28.  
  29.     @Override
  30.     public String toString() {
  31.         StringBuilder sb = new StringBuilder();
  32.         sb.append("[");
  33.         for (T el:elements){
  34.             sb.append(el+", ");
  35.         }
  36.         sb.deleteCharAt(sb.lastIndexOf(","));
  37.         sb.deleteCharAt(sb.lastIndexOf(" "));
  38.         sb.append("]");
  39.         return sb.toString();
  40.     }
  41. }
  42. class BlockContainer<T extends Comparable<T>>{
  43.     private List<Block<T>> blocks;
  44.     private int size;
  45.  
  46.     public BlockContainer(int size) {
  47.         this.size = size;
  48.         this.blocks = new ArrayList<>();
  49.     }
  50.  
  51.     public void add(T a){
  52.         if (blocks.isEmpty()){
  53.             Block<T> block =  new Block<>(size);
  54.             block.addElement(a);
  55.             blocks.add(block);
  56.         }
  57.         else if (!blocks.get(blocks.size()-1).isFull()){
  58.             blocks.get(blocks.size()-1).addElement(a);
  59.         }else{
  60.             Block<T> block =  new Block<>(size);
  61.             block.addElement(a);
  62.             blocks.add(block);
  63.         }
  64.     }
  65.  
  66.     public boolean remove(T a){
  67.         boolean flag = blocks.get(blocks.size()-1).remove(a);
  68.         if (blocks.get(blocks.size()-1).getElements().isEmpty())
  69.             blocks.remove(blocks.get(blocks.size()-1));
  70.         return flag;
  71.     }
  72.  
  73.     public void sort(){
  74.         ArrayList<T> elems = new ArrayList<>();
  75.         blocks.forEach(block -> elems.addAll(block.getElements()));
  76.         elems.sort(T::compareTo);
  77.  
  78.         blocks.clear();
  79.         for (T el:elems){
  80.             this.add(el);
  81.         }
  82.     }
  83.  
  84.     @Override
  85.     public String toString() {
  86.         StringBuilder sb = new StringBuilder();
  87.         blocks.forEach(tBlock -> sb.append(tBlock+","));
  88.         sb.deleteCharAt(sb.lastIndexOf(","));
  89.         return sb.toString();
  90.     }
  91. }
  92. public class BlockContainerTest {
  93.     public static void main(String[] args) {
  94.         Scanner scanner = new Scanner(System.in);
  95.         int n = scanner.nextInt();
  96.         int size = scanner.nextInt();
  97.         BlockContainer<Integer> integerBC = new BlockContainer<Integer>(size);
  98.         scanner.nextLine();
  99.         Integer lastInteger = null;
  100.         for(int i = 0; i < n; ++i) {
  101.             int element = scanner.nextInt();
  102.             lastInteger = element;
  103.             integerBC.add(element);
  104.         }
  105.         System.out.println("+++++ Integer Block Container +++++");
  106.         System.out.println(integerBC);
  107.         System.out.println("+++++ Removing element +++++");
  108.         integerBC.remove(lastInteger);
  109.         System.out.println("+++++ Sorting container +++++");
  110.         integerBC.sort();
  111.         System.out.println(integerBC);
  112.         BlockContainer<String> stringBC = new BlockContainer<String>(size);
  113.         String lastString = null;
  114.         for(int i = 0; i < n; ++i) {
  115.             String element = scanner.next();
  116.             lastString = element;
  117.             stringBC.add(element);
  118.         }
  119.         System.out.println("+++++ String Block Container +++++");
  120.         System.out.println(stringBC);
  121.         System.out.println("+++++ Removing element +++++");
  122.         stringBC.remove(lastString);
  123.         System.out.println("+++++ Sorting container +++++");
  124.         stringBC.sort();
  125.         System.out.println(stringBC);
  126.     }
  127. }
  128.  
  129. // Вашиот код овде
  130.  
  131.  
  132.  
  133.  
  134.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement