Advertisement
nwpepper

MyArrayList

Feb 20th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. public class MyArrayList<T> {
  2.     private int default_cap = 1000;
  3.     private int cap = 0;
  4.     private Object[] myMassive = {};
  5.  
  6.     public MyArrayList() {
  7.         this.myMassive = new Object[default_cap];
  8.     }
  9.  
  10.     public MyArrayList(int cap) {
  11.         if (cap > 0) {
  12.             this.myMassive = new Object[cap];
  13.             this.cap = cap;
  14.         } else if (cap == 0) {
  15.             this.myMassive = new Object[this.default_cap];
  16.             this.cap = default_cap;
  17.         } else {
  18.             throw new IllegalArgumentException("Illegal Capacity: "+ cap);
  19.         }
  20.     }
  21.  
  22.     public void add(T element){
  23.         if(myMassive.length < cap){
  24.             // Все нормуль, есть свободные элементы
  25.             myMassive[myMassive.length+1] = element;
  26.         }else{
  27.             // Нет свободных мест, надо увеличивать массив
  28.             if(myMassive.length+default_cap > Integer.MAX_VALUE) {
  29.                 Object[] tempMassive = new Object[Integer.MAX_VALUE];
  30.                 // копирнем элементы
  31.                 for(int i=0;i<=myMassive.length;i++){
  32.                     tempMassive[i] = myMassive[i];
  33.                 }
  34.                 // складываем новый элемент в следующую ячейку
  35.                 tempMassive[myMassive.length+1] = element;
  36.                 myMassive = tempMassive;
  37.             }else{
  38.                 Object[] tempMassive = new Object[myMassive.length+default_cap];
  39.                 // копирнем элементы
  40.                 for(int i=0;i<=myMassive.length;i++){
  41.                     tempMassive[i] = myMassive[i];
  42.                 }
  43.                 // складываем новый элемент в следующую ячейку
  44.                 tempMassive[myMassive.length+1] = element;
  45.                 myMassive = tempMassive;
  46.             }
  47.         }
  48.     }
  49.  
  50.     public T get(int index)
  51.     {
  52.         if(index < 0 || index > myMassive.length) {
  53.             throw new IndexOutOfBoundsException("");
  54.         }else
  55.         {
  56.             return (T) myMassive[index];
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement