Skip to content

Instantly share code, notes, and snippets.

@YanchevskayaAnna
Created June 10, 2016 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save YanchevskayaAnna/63c6648e004840fc251ecbcf2f121a94 to your computer and use it in GitHub Desktop.
Save YanchevskayaAnna/63c6648e004840fc251ecbcf2f121a94 to your computer and use it in GitHub Desktop.
MyArraylist_Misha
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