当需要动态的减少或增加数据项时,可以使用链表这种数据结构。
链表是由若干称为结点的对象组成的一种数据结构,每个结点含有一个数据和下一个结点的引用(单链表),或者含有一个数据并含有上一个结点的引用和下一个结点的引用(双链表)。
使用java.util包中的LinkedList类创建一个链表,然后使用add()方法向这个链表中依次增加结点。
存放在结点中的数据都被看做是一个Object对象。当使用get()方法获得一个结点对象后,要使用类型转换运算符转换回原来的数据类型。使用泛型可以不用进行类型转换。
遍历链表用Iterator类效率比较高。
链表是由若干称为结点的对象组成的一种数据结构,每个结点含有一个数据和下一个结点的引用(单链表),或者含有一个数据并含有上一个结点的引用和下一个结点的引用(双链表)。
使用java.util包中的LinkedList类创建一个链表,然后使用add()方法向这个链表中依次增加结点。
存放在结点中的数据都被看做是一个Object对象。当使用get()方法获得一个结点对象后,要使用类型转换运算符转换回原来的数据类型。使用泛型可以不用进行类型转换。
遍历链表用Iterator类效率比较高。
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class ListTest {
/**
* @param args
*/
public static void main(String[] args) {
ListTest test = new ListTest();
List<String> mylist = new LinkedList<String>();//无需指定数组大小,可以动态定义,此处用了泛型。
mylist.add("I");
mylist.add("Love");
mylist.add("Dannie");
System.out.println("链表的长度即结点的个数为:" + mylist.size());
System.out.println("I 的位置为:" + mylist.indexOf("I"));
System.out.println("Love 的位置为:" + mylist.indexOf("Love"));
System.out.println("love 的位置为:" + mylist.indexOf("love"));
test.printList(mylist);
mylist.clear();
System.out.println();
System.out.println("List has cleared!");
test.printList(mylist);
}
public void printList(List<String> list) {
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
}