diff --git a/.gitignore b/.gitignore index a1c2a23..f5fd367 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,5 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +/out/ +/.idea/ diff --git a/src/Tkhorzhevskiy/DimbossArrayList.java b/src/Tkhorzhevskiy/DimbossArrayList.java new file mode 100644 index 0000000..224d6ca --- /dev/null +++ b/src/Tkhorzhevskiy/DimbossArrayList.java @@ -0,0 +1,209 @@ +package Tkhorzhevskiy; + +import java.util.*; + + +public class DimbossArrayList implements List { + + private E[] listArr; + private int size; + private static final int DEFAULT_SIZE=10; + + public DimbossArrayList() { + listArr = (E[]) new Object[10]; + size = 0; + } + + + public void ensureCapacity(int minCapcity) { + int currentCapacity = listArr.length; + if (minCapcity > currentCapacity) { + E[] oldListArr = listArr; + listArr = (E[]) new Object[minCapcity]; + for (int i = 0; i < size; i++) + listArr[i] = oldListArr[i]; + oldListArr = null; + } + } + + + public void rangeCheck(int index, String msg, int upperBound) { + if (index < 0 || index >= upperBound + 1) + throw new IndexOutOfBoundsException(msg + " индекс" + index + " находится за границей массива"); + } + + + public void add(int index, E element) { + rangeCheck(index, "Arraylist add()", size); + if (listArr.length == size) + ensureCapacity(2 * listArr.length); + for (int j = size - 1; j >= index; j--) { + listArr[j + 1] = listArr[j]; + } + listArr[index] = element; + size++; + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + @Override + public boolean contains(Object o) { + for (int i = 0; i < size; i++) + if (listArr[i] == o) + return true; + return false; + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public Object[] toArray() { + Object[] arr = new Object[size()]; + for (int i = 0; i < size(); i++) { + arr[i] = get(i); + } + return arr.clone(); + } + + @Override + public E1[] toArray(E1[] a) { + Object[] arr = new Object[size()]; + for (int i = 0; i < size(); i++) { + arr[i] = get(i); + } + return (E1[]) arr.clone(); + } + + @Override + public boolean add(E t) { + add(size, t); + return true; + } + + @Override + public boolean remove(Object o) { + int i; + for (i = 0; i < size; i++) + if (listArr[i] == o) + break; + if (i == size) + return false; + for (int j = i - 1; j < size; j++) + listArr[j] = listArr[j + 1]; + size--; + return true; + + } + + @Override + public boolean containsAll(Collection c) { + return false; + } + + @Override + public boolean addAll(Collection c) { + return false; + } + + @Override + public boolean addAll(int index, Collection c) { + return false; + } + + @Override + public boolean removeAll(Collection c) { + return false; + } + + @Override + public boolean retainAll(Collection c) { + return false; + } + + @Override + public void clear() { + listArr = (E[]) new Object[DEFAULT_SIZE]; + } + + @Override + public E get(int index) { + return listArr[index]; + } + + @Override + public E set(int index, E element) { + rangeCheck(index, " установить индекс ", size - 1); + listArr[index] = element; + return element; + } + + @Override + public E remove(int index) { + + rangeCheck(index, " удалить индекс ", size - 1); + E r = listArr[index]; + for (int i = index; i < size; i++) + listArr[i] = listArr[i + 1]; + size--; + return r; + } + + @Override + public int indexOf(Object o) { + for (int i = 0; i < size; i++) + if (listArr[i] == o) + return i; + return -1; + } + + @Override + public int lastIndexOf(Object o) { + return 0; + } + + @Override + public ListIterator listIterator() { + return null; + } + + @Override + public ListIterator listIterator(int index) { + return null; + } + + @Override + public List subList(int fromIndex, int toIndex) { + return null; + } + + public static void main(String [] args){ + DimbossArrayList testList=new DimbossArrayList<>(); + testList.add(2); + testList.add(2); + testList.add(8); + System.out.println(testList.get(0)); + System.out.println(testList.size()); + System.out.println(testList.isEmpty()); + System.out.println(testList.contains(7)); + System.out.println(testList.remove(2)); + System.out.println(testList.contains(1)); + testList.set(1,6); + System.out.println(testList.indexOf(6)); + Object[] arr=testList.toArray(); + System.out.println(Arrays.toString(arr)); + } + + + +}