package com.aflfte.mycollectiok;
public class MyLinkedList<E> {
public static void main(String[] args) {
MyLinkedList<String> list=new MyLinkedList();
System.out.println(list.isKong());
for(int i=0;i<10;i++) {
list.add("a"+i);
}
System.out.println(list.toString());
System.out.println(list.size());
System.out.println(list.isKong());
//System.out.println(list.get(6));
//list.set(1, "bb");
//System.out.println(list.toString());
//list.remove(6);
//System.out.println(list);
//list.remove(0);
//System.out.println(list);
//System.out.println(list.get(7));
//list.remove(7);
//System.out.println(list);
//list.into(0, "a0");
//System.out.println(list);
//System.out.println(list.get(6));
list.add(6, "a6");
System.out.println(list);
list.add(9, "aa");
System.out.println(list);
}
private Node first;
private Node last;
private int size;
public void add(E e) {
Node node=new Node(e);
if(first==null) {
first=node;
last=node;
}else {
last.next=node;
node.previout=last;
last=node;
}
size++;
}
public String toString() {
StringBuffer str=new StringBuffer();
str.append("[");
Node a=first;
while(a!=null) {
str.append(a.element+",");
a=a.next;
}
str.setCharAt(str.length()-1,']');
return str.toString();
}
public MyLinkedList() {
super();
}
public int size() {
return size;
}
public boolean isKong() {
if(size!=0) {
return false;
}else {
return true;
}
}
public Object get(int index) {
if(index<0||index>=size) {
return -1;
}
Node temp=getNode(index);
/*使用for循环也可以
* for(int i=0;i<index;i++){
* temp=temp.next;
* }
*
*/
return temp.element;
}
public void set(int index,E e) {
Node temp=first;
int i=0;
while(i!=index) {
temp=temp.next;
i++;
}
temp.element=e;
}
public Node getNode(int index) {
Node temp;
if(index<=(size>>1)) {
temp=first;
int i=0;
while(i!=index) {
temp=temp.next;
i++;
}
}else {
temp=last;
if(index!=(size-1)) {
for(int i=0;i<size-index-1;i++) {
temp=temp.previout;
}
}
}
return temp;
}
public void remove(int index) {
Node temp=getNode(index);
Node down=temp.next;//a9 >null
Node up=temp.previout;//a9< a8
int a=size-1;
if(index==0) {
first=down;
down.previout=null;
}else if(index>0) {
up.next=down;
if(index!=a) {
down.previout=up;
}else {
last=up;
}
}
size--;
}
public void add(int index,E e) {
Node temp=getNode(index);
Node up=temp.previout;
Node in=new Node(e);
if(index<size) {
if(index==0) {
in.next=first;
first.previout=in;
first=in;
}else if(index >0) {
up.next=in;
in.previout=up;
in.next=temp;
temp.previout=in;
}
}
size++;
}
}
« 迭代器的使用
|
手动实现HashSet方法»
|