LinkedList
package list;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class MyLinkedList implements List {
private int size;
private Node first;
private Node last;
private static class Node {
// 存储的数据
Object item;
// 上一个
Node next;
// 下一个
Node prev;
public Node(Node prev, Object item, Node next) {
this.next = next;
this.item = item;
this.prev = prev;
}
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean contains(Object o) {
return false;
}
@Override
public Iterator iterator() {
return null;
}
@Override
public Object[] toArray() {
return new Object[0];
}
@Override
public boolean add(Object o) {
Node l = last;
Node node = new Node(l, o, null);
last = node;
if (l == null) {
first = node;
} else {
l.next = node;
}
size++;
return true;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean addAll(Collection c) {
return false;
}
@Override
public boolean addAll(int index, Collection c) {
return false;
}
@Override
public void clear() {
}
@Override
public Object get(int index) {
if (index < (size >> 1)) {
Node x = first;
for (int i = 0; i < index; i++) {
x = x.next;
}
return x.item;
} else {
Node x = last;
for (int i = size - 1; i > index; i--) {
x = x.prev;
}
return x.item;
}
}
@Override
public Object set(int index, Object element) {
return null;
}
@Override
public void add(int index, Object element) {
}
@Override
public Object remove(int index) {
return null;
}
@Override
public int indexOf(Object o) {
return 0;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@Override
public ListIterator listIterator() {
return null;
}
@Override
public ListIterator listIterator(int index) {
return null;
}
@Override
public List subList(int fromIndex, int toIndex) {
return null;
}
@Override
public boolean retainAll(Collection c) {
return false;
}
@Override
public boolean removeAll(Collection c) {
return false;
}
@Override
public boolean containsAll(Collection c) {
return false;
}
@Override
public Object[] toArray(Object[] a) {
return new Object[0];
}
}
package Test.list;
import list.MyArrayList;
import list.MyLinkedList;
import org.junit.jupiter.api.Test;
import java.util.List;
public class MylinkedListTest {
@Test
public void test01() {
List list = new MyLinkedList();
for (int i = 0; i < 5; i++) {
list.add(i);
}
System.out.println(list.size());
}
//5
@Test
public void test02() {
List list = new MyLinkedList();
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println(list.size());
}
//10
@Test
public void test03() {
List list = new MyLinkedList();
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println(list.size());
list.add(10);
System.out.println(list.size());
}
@Test
public void test04() {
List list = new MyLinkedList();
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println(list.size());
list.add(10);
System.out.println(list.size());
System.out.println(list.get(5));
}
@Test
public void test05() {
List list = new MyLinkedList();
for (int i = 0; i < 10; i++) {
list.add(i);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
@Test
public void test06() {
List list = new MyArrayList();
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println(list);
}
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
@Test
public void test07() {
List list = new MyArrayList();
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println(list);
list.remove(3);
System.out.println(list);
System.out.println(list.size());
}
}