package Day12;
import java.util.*;
public class MyLinkedList implements List {
public MyLinkedList() {
head = new Node(0);
}
public MyLinkedList(Collection c) {
this();
for (Object obj : c) {
this.add(obj);
}
}
public void add(int index, Object element) {
if (index < 0 || index > ((Integer) (head.data))) {
System.out.println("index不合法!");
return;
}
Node node = new Node(element);
Node temp = head.next;
if (temp == null) {
head.next = node;
head.data = (Integer) (head.data) + 1;
return;
}
int i = 0;
while (i < index - 1) {
temp = temp.next;
i++;
}
node.next = temp.next;
temp.next = node;
int count = ((Integer) (head.data));
count++;
head.data = count;
}
public boolean add(Object e) {
int count = ((Integer) (head.data));
this.add(count, e);
return true;
}
public boolean addAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
public boolean addAll(int arg0, Collection arg1) {
// TODO Auto-generated method stub
return false;
}
public void clear() {
int count = 0;
head.data = count;
head.next = null;
System.gc();//
}
public boolean contains(Object o) {
Node temp = head;
while (temp.next != null) {
temp = temp.next;
if (temp.data.equals(o)) {
return true;
}
}
return false;
}
public boolean containsAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
public Object get(int index) {
int count = ((Integer) (head.data));
if (index < 0 || index > count - 1) {
System.out.println("index不合法");
return null;
}
Node temp = head.next;
int i = 0;
while (i < index) {
temp = temp.next;
i++;
}
return temp.data;
}
public int indexOf(Object e) {
int count = ((Integer) (head.data));
Node temp = head.next;
for (int i = 0; i < count; i++) {
if (temp.data.equals(e)) {
return i;
}
temp = temp.next;
}
return -1;
}
public boolean isEmpty() {
int count = ((Integer) (head.data));
return count == 0;
}
public Iterator iterator() {
return new Iterator() {
int count = ((Integer) (head.data));
int i = 0;
public boolean hasNext() {
return i < count;
}
public Object next() {
Node n = head.next;
int temp = 0;
while (temp < i) {
n = n.next;
temp++;
}
i++;
return n.data;
}
public void remove() {
// TODO Auto-generated method stub
}
};
}
public int lastIndexOf(Object arg0) {
// TODO Auto-generated method stub
return 0;
}
public ListIterator listIterator() {
// TODO Auto-generated method stub
return null;
}
public ListIterator listIterator(int arg0) {
// TODO Auto-generated method stub
return null;
}
public Object remove(int index) {
int count = ((Integer) (head.data));
if (index < 0 || index > count - 1) {
System.out.println("index不合法");
return null;
}
head.data = (Integer) head.data - 1;
Node temp = head.next;
Object obj = 0.0;
if (index==0) {
obj = temp.data;
head.next=temp.next;
} else {
int i = 0;
while (i < index-1 ) {
temp = temp.next;
i++;
}
obj=temp.next.data;
temp.next=temp.next.next;
}
return obj;
}
public boolean remove(Object e) {
int count = ((Integer) (head.data));
int i = this.indexOf(e);
if (i == -1) {
System.out.println("连表为空或者连表中不存在参数 e");
return false;
}
this.remove(i);
return true;
}
public boolean removeAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
public boolean retainAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
public Object set(int index, Object e) {
int count = ((Integer) (head.data));
if (index < 0 || index > count - 1) {
System.out.println("index不合法");
return null;
}
Node temp = head.next;
int i = 0;
while (i < index) {
temp = temp.next;
i++;
}
Object obj = temp.data;
temp.data = e;
return obj;
}
public int size() {
int count = ((Integer) (head.data));
return count;
}
public List subList(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
public Object[] toArray() {
//
return null;
}
public Object[] toArray(Object[] arg0) {
// TODO Auto-generated method stub
return null;
}
/**
*头节点
*/
public Node head;
/**
* 静态内部类,代表节点类型
*
* @author jsjx1
*
*/
private static class Node {
public Object data;
public Node next;
public Node(Object obj) {
this.data = obj;
}
}
}
////////////////////////////////////////////////
package Day12;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class ListTest {
/**
* @param args
*/
public static void main(String[] args) {
// List list=new MyArrayList(5);
List list = new MyLinkedList();
list.add("hello");
list.add("haha");
list.add("hehe");
list.add(5);
list.add(3.14);
list.add("hehe");
list.remove(3.14);
System.out.println("contains[3.14]?" + list.contains(3.14));
System.out.println("contains[haha]?" + list.contains("haha"));
list.set(4, "world");
System.out.println("get[2]:" + list.get(2));
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("size:" + list.size());
System.out.println("======================");
list.clear();
System.out.println("size:" + list.size());
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}