From 07ffec3af58e6e17ece1a60ebea64dabd795cf46 Mon Sep 17 00:00:00 2001 From: dmithorzh Date: Sun, 14 Nov 2021 08:53:57 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=AF=20=D0=BD=D0=B5=20=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + src/Tkhorzhevskiy/DimbossArrayList.java | 207 ++++++++++++++++++++++++ 2 files changed, 209 insertions(+) create mode 100644 src/Tkhorzhevskiy/DimbossArrayList.java 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..5097dbd --- /dev/null +++ b/src/Tkhorzhevskiy/DimbossArrayList.java @@ -0,0 +1,207 @@ +package Tkhorzhevskiy; + +import java.util.*; + + +public class DimbossArrayList implements List { + 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)); + } + + + 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; + } + +} From fd9f9f013ce904a2638e8474b8c9c6dbefbd2f21 Mon Sep 17 00:00:00 2001 From: dmithorzh <92126173+dmithorzh@users.noreply.github.com> Date: Sun, 14 Nov 2021 08:56:46 +0300 Subject: [PATCH 2/2] Update DimbossArrayList.java --- src/Tkhorzhevskiy/DimbossArrayList.java | 38 +++++++++++++------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/Tkhorzhevskiy/DimbossArrayList.java b/src/Tkhorzhevskiy/DimbossArrayList.java index 5097dbd..224d6ca 100644 --- a/src/Tkhorzhevskiy/DimbossArrayList.java +++ b/src/Tkhorzhevskiy/DimbossArrayList.java @@ -4,24 +4,7 @@ public class DimbossArrayList implements List { - 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)); - } - - + private E[] listArr; private int size; private static final int DEFAULT_SIZE=10; @@ -203,5 +186,24 @@ public ListIterator listIterator(int index) { 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)); + } + + }