Skip to content

Commit

Permalink
did all expected changes
Browse files Browse the repository at this point in the history
  • Loading branch information
maxymmusiienko committed Nov 8, 2023
1 parent a14b4b9 commit 2c8f09e
Showing 1 changed file with 25 additions and 33 deletions.
58 changes: 25 additions & 33 deletions src/main/java/core/basesyntax/ArrayList.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
public class ArrayList<T> implements List<T> {
private static final int DEFAULT_CAPACITY = 10;
private static final double RESIZE_COEFFICIENT = 1.5;
private Object[] elements;
private T[] elements;
private int size;

public ArrayList() {
this.elements = new Object[DEFAULT_CAPACITY];
this.elements = (T[]) new Object[DEFAULT_CAPACITY];
}

@Override
Expand All @@ -20,11 +20,7 @@ public void add(T value) {

@Override
public void add(T value, int index) {
if (index < 0 || index > size) {
throw new ArrayListIndexOutOfBoundsException("Index outed of bounds, Index: " + index
+ ", Size: "
+ size);
}
checkAddBounds(index);
ensureCapacity();
System.arraycopy(elements, index, elements, index + 1, size - index);
elements[index] = value;
Expand All @@ -40,31 +36,19 @@ public void addAll(List<T> list) {

@Override
public T get(int index) {
if (index < 0 || index >= size) {
throw new ArrayListIndexOutOfBoundsException("Index outed of bounds, Index: " + index
+ ", Size: "
+ size);
}
checkBounds(index);
return (T) elements[index];
}

@Override
public void set(T value, int index) {
if (index < 0 || index >= size) {
throw new ArrayListIndexOutOfBoundsException("Index outed of bounds, Index: " + index
+ ", Size: "
+ size);
}
checkBounds(index);
elements[index] = value;
}

@Override
public T remove(int index) {
if (index < 0 || index >= size) {
throw new ArrayListIndexOutOfBoundsException("Index outed of bounds, Index: " + index
+ ", Size: "
+ size);
}
checkBounds(index);
T removedValue = (T) elements[index];
System.arraycopy(elements, index + 1, elements, index, size - index - 1);
elements[--size] = null;
Expand All @@ -73,17 +57,9 @@ public T remove(int index) {

@Override
public T remove(T element) {
if (element == null) {
for (int i = 0; i < size; i++) {
if (elements[i] == null) {
return remove(i);
}
}
throw new NoSuchElementException("Element not found");
}

for (int i = 0; i < size; i++) {
if (element.equals(elements[i])) {
if ((element == null && elements[i] == null)
|| (element != null && element.equals(elements[i]))) {
return remove(i);
}
}
Expand All @@ -102,7 +78,7 @@ public boolean isEmpty() {

private void resize() {
int newCapacity = (int) (elements.length * RESIZE_COEFFICIENT);
Object[] newElements = new Object[newCapacity];
T[] newElements = (T[]) new Object[newCapacity];
System.arraycopy(elements, 0, newElements, 0, size);
elements = newElements;
}
Expand All @@ -112,4 +88,20 @@ private void ensureCapacity() {
resize();
}
}

private void checkBounds(int index) {
if (index < 0 || index >= size) {
throw new ArrayListIndexOutOfBoundsException("Index outed of bounds, Index: " + index
+ ", Size: "
+ size);
}
}

private void checkAddBounds(int index) {
if (index < 0 || index > size) {
throw new ArrayListIndexOutOfBoundsException("Index outed of bounds, Index: " + index
+ ", Size: "
+ size);
}
}
}

0 comments on commit 2c8f09e

Please sign in to comment.