Advertisement
CSenshi

OOP - Immutable ArrayList

Jun 30th, 2019
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. package ArrayLists.ImmutabelArrayList;
  2. //სალამი გაიზ,
  3. //        რადგან მეორე ამოცანამ ასეთი აჟიოტაჟი გამოიწვია აქვე დავდებ ამოსნას
  4. //        მნიშვნელოვანი მომენტებია:
  5. //        1. Copyable ინტერფეისის შექმნა
  6. //        2. add მეთოდში გადაცემული ელემენტის კოპირება
  7. //        3. მასივის კოპირება და ახალი ობიექტის გაკეთება
  8. //        4. გეთ მეთოდში დაბრუნებული ელემენტის კოპირება
  9. //        5. final ქივორდების მიწერა და <E extends Copyable>
  10.  
  11.  
  12. interface Copyable<E>{//აქ public ეწრა ინტერფეისს, მაგრამ ეგ ერორს აგდებდა და წავუშალე, დანარჩენი ისეა, როგორც შოთამ დადო.
  13.     public E copy();
  14. }
  15. public final class ImmutableArrayList<E extends Copyable>{
  16.     private final int size;
  17.     private static final int DEFAULT_CAPACITY = 10;
  18.     private final Object elements[];
  19.  
  20.     public ImmutableArrayList() {
  21.         size = 0;
  22.         elements = new Object[DEFAULT_CAPACITY];
  23.     }
  24.  
  25.     public ImmutableArrayList(ImmutableArrayList<E> list, E newElem){
  26.         this.elements = new Object[list.size + 1];
  27.         this.size = list.size+1;
  28.         for (int i = 0; i<list.size; i++){
  29.             this.elements[i] = list.elements[i];
  30.         }
  31.         this.elements[this.size-1] = newElem.copy();
  32.     }
  33.  
  34.     public ImmutableArrayList<E> add(E e) {
  35.         return new ImmutableArrayList<E>(this, e);
  36.     }
  37.  
  38.     @SuppressWarnings("unchecked")
  39.     public E get(int i) {
  40.         if (i>= size || i <0) {
  41.             throw new IndexOutOfBoundsException("Index: " + i + ", Size " + i );
  42.         }
  43.         return (E)((E) elements[i]).copy();
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement