Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.stream.Collectors;
- class Block<T extends Comparable<T>>{
- int n; //max elementi vo blokot
- Set<T> elements;
- public Block(int n) {
- this.n = n;
- this.elements = new TreeSet<>(T::compareTo);
- }
- public void addElement(T element){
- elements.add(element);
- }
- public boolean isFull(){
- return elements.size()==n;
- }
- public boolean remove (T element){
- return elements.remove(element);
- }
- public Set<T> getElements() {
- return elements;
- }
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("[");
- for (T el:elements){
- sb.append(el+", ");
- }
- sb.deleteCharAt(sb.lastIndexOf(","));
- sb.deleteCharAt(sb.lastIndexOf(" "));
- sb.append("]");
- return sb.toString();
- }
- }
- class BlockContainer<T extends Comparable<T>>{
- private List<Block<T>> blocks;
- private int size;
- public BlockContainer(int size) {
- this.size = size;
- this.blocks = new ArrayList<>();
- }
- public void add(T a){
- if (blocks.isEmpty()){
- Block<T> block = new Block<>(size);
- block.addElement(a);
- blocks.add(block);
- }
- else if (!blocks.get(blocks.size()-1).isFull()){
- blocks.get(blocks.size()-1).addElement(a);
- }else{
- Block<T> block = new Block<>(size);
- block.addElement(a);
- blocks.add(block);
- }
- }
- public boolean remove(T a){
- boolean flag = blocks.get(blocks.size()-1).remove(a);
- if (blocks.get(blocks.size()-1).getElements().isEmpty())
- blocks.remove(blocks.get(blocks.size()-1));
- return flag;
- }
- public void sort(){
- ArrayList<T> elems = new ArrayList<>();
- blocks.forEach(block -> elems.addAll(block.getElements()));
- elems.sort(T::compareTo);
- blocks.clear();
- for (T el:elems){
- this.add(el);
- }
- }
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- blocks.forEach(tBlock -> sb.append(tBlock+","));
- sb.deleteCharAt(sb.lastIndexOf(","));
- return sb.toString();
- }
- }
- public class BlockContainerTest {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- int size = scanner.nextInt();
- BlockContainer<Integer> integerBC = new BlockContainer<Integer>(size);
- scanner.nextLine();
- Integer lastInteger = null;
- for(int i = 0; i < n; ++i) {
- int element = scanner.nextInt();
- lastInteger = element;
- integerBC.add(element);
- }
- System.out.println("+++++ Integer Block Container +++++");
- System.out.println(integerBC);
- System.out.println("+++++ Removing element +++++");
- integerBC.remove(lastInteger);
- System.out.println("+++++ Sorting container +++++");
- integerBC.sort();
- System.out.println(integerBC);
- BlockContainer<String> stringBC = new BlockContainer<String>(size);
- String lastString = null;
- for(int i = 0; i < n; ++i) {
- String element = scanner.next();
- lastString = element;
- stringBC.add(element);
- }
- System.out.println("+++++ String Block Container +++++");
- System.out.println(stringBC);
- System.out.println("+++++ Removing element +++++");
- stringBC.remove(lastString);
- System.out.println("+++++ Sorting container +++++");
- stringBC.sort();
- System.out.println(stringBC);
- }
- }
- // Вашиот код овде
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement