Skip to content

Commit

Permalink
created own ArrayList collection which implements our List interface …
Browse files Browse the repository at this point in the history
…and uses custom exeption
  • Loading branch information
maxymmusiienko committed Nov 8, 2023
1 parent 97ba460 commit 9a0e309
Showing 1 changed file with 62 additions and 9 deletions.
71 changes: 62 additions & 9 deletions src/main/java/core/basesyntax/ArrayList.java
Original file line number Diff line number Diff line change
@@ -1,48 +1,101 @@
package core.basesyntax;

import java.util.Arrays;
import java.util.NoSuchElementException;

public class ArrayList<T> implements List<T> {
private static final int DEFAULT_CAPACITY = 10;
private Object[] elements;
private int size;

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

private void ensureCapacity() {
if (size == elements.length) {
int newCapacity = (int) (elements.length * 1.5);
elements = Arrays.copyOf(elements, newCapacity);
}
}

@Override
public void add(T value) {

ensureCapacity();
elements[size++] = value;
}

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

if (index < 0 || index > size) {
throw new ArrayListIndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
ensureCapacity();
System.arraycopy(elements, index, elements, index + 1, size - index);
elements[index] = value;
size++;
}

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

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) {
throw new ArrayListIndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
return (T) elements[index];
}

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

if (index < 0 || index >= size) {
throw new ArrayListIndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
elements[index] = value;
}

@Override
public T remove(int index) {
return null;
if (index < 0 || index >= size) {
throw new ArrayListIndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
T removedValue = (T) elements[index];
System.arraycopy(elements, index + 1, elements, index, size - index - 1);
elements[--size] = null;
return removedValue;
}

@Override
public T remove(T element) {
return null;
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])) {
return remove(i);
}
}
throw new NoSuchElementException("Element not found");
}

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

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

0 comments on commit 9a0e309

Please sign in to comment.