Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can you check my task, please? #1214

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Changes from 26 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
1a87a5d
update checklist.md (#1182)
boroda4436 Oct 12, 2023
939b3b6
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 6, 2023
58c52b9
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 6, 2023
98d410a
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 6, 2023
f2d3fa2
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 6, 2023
4ec2d52
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 8, 2023
030b08e
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 8, 2023
c7f9151
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 8, 2023
bea0209
Merge remote-tracking branch 'origin/master'
IvanIKS Nov 8, 2023
2216abf
Merge remote-tracking branch 'origin/master'
IvanIKS Apr 23, 2024
b5ad7f3
Merge remote-tracking branch 'origin/master'
IvanIKS Apr 23, 2024
d89778c
Merge remote-tracking branch 'origin/master'
IvanIKS Apr 23, 2024
a229576
Merge remote-tracking branch 'origin/master'
IvanIKS Apr 23, 2024
6c9a798
Merge remote-tracking branch 'origin/master'
IvanIKS Apr 24, 2024
c5bd73d
Fixed problems.
IvanIKS Apr 24, 2024
772eb65
Merge remote-tracking branch 'origin/master'
IvanIKS Apr 28, 2024
833a81e
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 3, 2024
bfcc2ba
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 4, 2024
459bafa
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 4, 2024
0245dfd
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 4, 2024
45c2358
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 4, 2024
e20ed6f
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 6, 2024
83b79f5
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 6, 2024
611d5ff
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 6, 2024
388e486
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 6, 2024
bfd7fcb
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 6, 2024
5cf1b11
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 7, 2024
68bc970
Merge remote-tracking branch 'origin/master'
IvanIKS Aug 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 70 additions & 9 deletions src/main/java/core/basesyntax/ArrayList.java
Original file line number Diff line number Diff line change
@@ -1,48 +1,109 @@
package core.basesyntax;

import java.util.NoSuchElementException;
import java.util.Objects;

public class ArrayList<T> implements List<T> {
private static final int BASE_SIZE = 10;
private static final double CAPACITY_INDEX = 1.5;
private T[] elements;
private int size;

public ArrayList() {
elements = (T[]) new Object[BASE_SIZE];
}

@Override
public void add(T value) {

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

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

checkAddIndex(index);
resize();
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;
checkIndex(index);
return elements[index];
}

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

checkIndex(index);
elements[index] = value;
}

@Override
public T remove(int index) {
return null;
checkIndex(index);
T removedElement = elements[index];
System.arraycopy(elements, index + 1, elements, index, size - index - 1);
size--;
return removedElement;
}

@Override
public T remove(T element) {
return null;
int index = findElement(element);
remove(index);
return element;
}

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

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

private void resize() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
private void resize() {
private void resize() {
if (elements.length == size) {...

if (size == elements.length) {
int newLength = (int) (elements.length * CAPACITY_INDEX);
Object[] newArray = new Object[(int) newLength];
System.arraycopy(elements, 0, newArray, 0, elements.length);
elements = (T[]) newArray;
}
}

private int findElement(T element) {
for (int i = 0; i < size; ++i) {
if (Objects.equals(element, elements[i])) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return i;
}
}
throw new NoSuchElementException("You're trying to remove element \""
+ element + "\", that is not present in the list");
}

private void checkIndex(int index) {
if (index < 0 || index >= size) {
throw new ArrayListIndexOutOfBoundsException("Can't reach element on position "
+ index + " in a list with size of " + size + " .");
}
}

private void checkAddIndex(int index) {
if (index < 0 || index > size + 1) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (index < 0 || index > size + 1) {
if (index < 0 || index > size) {

throw new ArrayListIndexOutOfBoundsException("Can't add element to position "
+ index + " in a list with size of " + size + " .");
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add

private void checkIndex(int index) {
        if (index < 0 || index > size) {
            throw new ArrayListIndexOutOfBoundsException("Invalid index, " + index);
        }
    }

}
}
Loading