Created
June 10, 2016 15:04
-
-
Save YanchevskayaAnna/63c6648e004840fc251ecbcf2f121a94 to your computer and use it in GitHub Desktop.
MyArraylist_Misha
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package scr.kurs2.week2.day2HomeWork.myArrayList; | |
import java.util.Arrays; | |
import java.util.Objects; | |
/** | |
* Created by miha on 03.06.2016. | |
*/ | |
public class MyArrayList { | |
private Object[] elements; | |
private int size; | |
private static final int DEFAULT_SIZE = 10; | |
private int counter; | |
public MyArrayList() { | |
elements = new Object[this.DEFAULT_SIZE]; | |
size = DEFAULT_SIZE; | |
} | |
public Object[] getElements() { | |
return elements; | |
} | |
public void setElements(Object[] elements) { | |
this.elements = elements; | |
} | |
public int getSize() { | |
return size; | |
} | |
public void setSize(int size) { | |
this.size = size; | |
} | |
public static int getDefaultSize() { | |
return DEFAULT_SIZE; | |
} | |
public int getCounter() { | |
return counter; | |
} | |
public void setCounter(int counter) { | |
this.counter = counter; | |
} | |
/*********Вывод листа на консоль******/ | |
public void show() { | |
for (int i = 0; i < counter; i++) { | |
System.out.println(elements[i]); | |
} | |
} | |
/*********Добавление объекта в ArrayList*****/ | |
public boolean add(Object obj) { | |
if (obj == null) return false; | |
/* Yanchevskaya A. Проверка уже есть в ensureCapacity(); | |
else if (counter < size) { | |
elements[counter++] = obj; | |
} else { | |
ensureCapacity(); | |
elements[counter++] = obj; | |
} | |
return true; | |
*/ | |
ensureCapacity(); | |
elements[counter++] = obj; | |
return true; | |
} | |
/****************************************************/ | |
public void ensureCapacity(){ | |
if (counter >= size) { | |
elements = Arrays.copyOf(elements, size * 2); | |
size = size * 2; | |
} | |
} | |
/*********Добавление объекта в ArrayList по индексу******/ | |
public boolean add(int index, Object obj) { | |
if (index > counter || index < 0) { // Yanchevskaya A. А если равен counter? | |
return false; | |
} | |
ensureCapacity(); | |
System.arraycopy(elements, index, elements, index + 1, counter - index); | |
elements[index] = obj; | |
counter++; | |
return true; | |
} | |
/*********Удаление объекта в ArrayList*******/ | |
public boolean remove(Object obj) { | |
for (int i = 0; i < counter; i++) { | |
if (obj == null) return false; | |
if (obj.equals(elements[i])) { | |
System.arraycopy(elements, i + 1, elements, i, counter - i - 1); | |
elements[--counter] = null; | |
return true; | |
} | |
} | |
return false; | |
} | |
/*********Удаление объекта в ArrayList по индексу******/ | |
public Object remove(int index) { | |
if (index < counter && index >= 0) { | |
int numForCopy = counter - index - 1; //какое количество элементов надо скопировать | |
System.arraycopy(elements, index + 1, elements, index, numForCopy); | |
elements[--counter] = null; //уменьшаем размер массива и забываем про последний элемент | |
return elements[index]; | |
} else return false; | |
} | |
/*************Метод получения объекта по индексу******************/ | |
public Object get(int index) { | |
if (index >= 0 && index < counter) { | |
return elements[index]; | |
} | |
return null; | |
} | |
/*********Метод Set.Заменяем объект новым объектом в позиции*******/ | |
public Object set(int index, Object obj) { | |
if (index < counter && index >= 0) { | |
elements[index] = obj; | |
return elements[index]; | |
} | |
return false; | |
} | |
/*********Метод size.Показываем сколько непустых елементов*******/ | |
public int size() { | |
return counter; | |
} | |
/*********Метод Contains.Проверяет есть ли объект в листе*******/ | |
public boolean contains(Object obj) { | |
for (int i = 0; i < counter; i++) { | |
if (obj == null) return false; // Yanchevskaya A. Проверку нужно вынести из цикла | |
if (obj.equals(elements[i])) | |
return true; | |
} | |
return false; | |
} | |
/*********Метод Clear.Очищаем массив(заполняем null*******/ | |
public boolean clear() { | |
for (int i = 0; i < counter; i++) { | |
elements[i] = null; | |
} | |
return true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment