Skip to content

Commit

Permalink
fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
LizaBalshv committed Nov 24, 2024
1 parent 798d9ef commit 443b109
Showing 1 changed file with 66 additions and 9 deletions.
75 changes: 66 additions & 9 deletions src/main/java/core/basesyntax/ArrayList.java
Original file line number Diff line number Diff line change
@@ -1,48 +1,105 @@
package core.basesyntax;

import java.util.NoSuchElementException;

public class ArrayList<T> implements List<T> {
private static final int DEFAULT_CAPACITY = 10;
private static final double GROW_INDEX = 1.5;
private T[] elementData;
private int size;

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

@Override
public void add(T value) {

if (size == elementData.length) {
grow();
}
elementData[size] = value;
size++;
}

@Override
public void add(T value, int index) {

if (index < 0 || index > size) {
throw new ArrayListIndexOutOfBoundsException("Invalid index: " + index);
}
if (size == elementData.length) {
grow();
}
System.arraycopy(elementData, index, elementData, index + 1, size - index);
elementData[index] = value;
size++;
}

@Override
public void addAll(List<T> list) {

int newSize = size + list.size();
if (newSize > elementData.length) {
grow();
}
for (int i = 0; i < list.size(); i++) {
add(list.get(i));
}
}

@Override
public T get(int index) {
return null;
if (index >= 0 && index < size) {
return elementData[index];
}
throw new ArrayListIndexOutOfBoundsException("Index: " + index + ", is invalid ");
}

@Override
public void set(T value, int index) {

if (index >= 0 && index < size) {
elementData[index] = value;
} else {
throw new ArrayListIndexOutOfBoundsException("Index: " + index + ", is invalid ");
}
}

@Override
public T remove(int index) {
return null;
if (index >= 0 && index < size) {
T deleteValue = elementData[index];
System.arraycopy(elementData, index + 1, elementData, index, size - index - 1);
elementData[--size] = null;
return deleteValue;
}
throw new ArrayListIndexOutOfBoundsException("Invalid index: " + index);
}

@Override
public T remove(T element) {
return null;
for (int i = 0; i < elementData.length; i++) {
if (elementData[i] == null && element == null) {
return remove(i);
}
if (elementData[i] != null && elementData[i].equals(element)) {
return remove(i);
}
}
throw new NoSuchElementException("Element: " + element + " not found");
}

@Override
public int size() {
return 0;
return size;
}

@Override
public boolean isEmpty() {
return false;
return size == 0;
}

private void grow() {
int newCapacity = (int)(size * GROW_INDEX);
T[] newElementData = (T[]) new Object[newCapacity];
System.arraycopy(elementData, 0, newElementData, 0, size);
elementData = newElementData;
}
}

0 comments on commit 443b109

Please sign in to comment.