Почему при добавлении в коллекцию элементов, выдает null ??
import org.jetbrains.annotations.NotNull;
import java.util.*;
import java.util.function.Consumer;
public class MyCollection<T> implements List<T> {
transient private Node<T> first; // null <-[first] -> <- [last] -> null
transient private Node<T> last;
transient private int size = 0;
public MyCollection() {
first = new Node<>(null, null, last);
last = new Node<>(null, first, null);
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public boolean contains(Object o) {
if (o == null) {
for (Node<T> target = first; target != null; target = target.next){
if(target.item == null)
return true;
}
}
else {
for (Node<T> target = first; target != null; target = target.next) {
if (o.equals(target.item)) {
return true;
}
}
}
return false;
}
@NotNull
@Override
public Iterator<T> iterator() {
if (isEmpty()) {
return Collections.<T>emptyList().iterator();
}
return new Iterator<>() {
private Node<T> currentNode = null;
@Override
public boolean hasNext() {
return currentNode != last;
}
@Override
public T next() {
if (currentNode == null) {
currentNode = first;
return currentNode.item;
}
if (currentNode.next == null) {
throw new NoSuchElementException();
}
currentNode = currentNode.next;
return currentNode.item;
}
};
}
@Override
public void forEach(Consumer<? super T> action) {
}
@NotNull
@Override
public Object[] toArray() {
int a = 0;
Object[] newArray = new Object[size];
for (Node<T> target = first; target != null; target = target.next) {
newArray[a++] = target.item;
}
return newArray;
}
@NotNull
@Override
public <R> R[] toArray(@NotNull R[] a) {
int b = 0;
Object[] newArray = a;
for (Node<T> target = first; target != null; target = target.next) {
newArray[b++] = target.item;
}
return a;
}
@Override
public boolean add(T t) {
if (t == null) {
throw new IllegalArgumentException("Null");
}
Node<T> prev = last;
prev.item = t;
last = new Node<>(null, prev, null);
prev.next = last;
size++;
return true;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean containsAll(@NotNull Collection<?> c) {
return false;
}
@Override
public boolean addAll(@NotNull Collection<? extends T> c) {
return false;
}
@Override
public boolean addAll(int index, @NotNull Collection<? extends T> c) {
return false;
}
@Override
public boolean removeAll(@NotNull Collection<?> c) {
return false;
}
@Override
public boolean retainAll(@NotNull Collection<?> c) {
return false;
}
@Override
public void clear() {
}
@Override
public T get(int index) {
if (index < 0 || index > size) {
return null;
}
Node<T> target = first;
for (int i = 0; i < index; i++) {
target = getNext(target);
}
return target.item;
}
private Node<T> getNext(Node<T> current) {
return current.next;
}
@Override
public T set(int index, T element) {
return null;
}
@Override
public void add(int index, T element) {
if (get(index) == null) {
throw new NoSuchElementException();
}
else if (index < 0 || index >= size) {
throw new NullPointerException();
}
}
@Override
public T remove(int index) {
return null;
}
private String outOfBoundsMsg(int index) {
return "Index: "+index+", Size: "+size;
}
private void checkIndex(int index) {
if (!correctIndex(index))
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
private boolean correctIndex(int index) {
return index >= 0 && index < size;
}
@Override
public int indexOf(Object o) {
return 0;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@NotNull
@Override
public ListIterator<T> listIterator() {
return null;
}
@NotNull
@Override
public ListIterator<T> listIterator(int index) {
return null;
}
@NotNull
@Override
public List<T> subList(int fromIndex, int toIndex) {
return null;
}
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(E element, Node<E> prev, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
}
могу ошибаться, но возможно в строке
Node<T> prev = last;
нужно поправить на
Node<T> prev = new Node<>(last);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мне нужно пропарсить веб страницу в java, на которой необходимо сперва залогиниться ввести пароль и тдЧитал в интернете , это делают через htmlunit
Есть строка с реквизитами вида AAA,BBBB,AAAAA И есть строка с реквизитами вида AAA, BBBB, AAAAA Так же бывают AAA,BBBB, AAAAA или AAA ,BBBB, AAAAA