List的三個子類
List有三個子類對象
- ArrayList類
- Vector類
- LinkedList類
我們先來了解一下它們各自的特點,然后再來詳細的了解它們
- ArrayList:
- 底層數(shù)據(jù)結構是數(shù)組氧卧,查詢快桃笙,增刪慢。
- 線程不安全沙绝,效率高搏明。
- Vector:
- 底層數(shù)據(jù)結構是數(shù)組,查詢快闪檬,增刪慢星著。
- 線程安全,效率低粗悯。
- LinkedList:
- 底層數(shù)據(jù)結構是鏈表虚循,查詢慢,增刪快。
- 線程不安全横缔,效率高铺遂。
那么List的這三個兒子,我們到底應該用那個呢茎刚?下面我們就來一一分析襟锐。
ArrayList類的使用
//ArrayList的使用。 我們來存儲字符串并遍歷public class ArrayListDemo {
public static void main(String[] args) {
// 創(chuàng)建集合對象
ArrayList array = new ArrayList();
// 創(chuàng)建元素對象膛锭,并添加元素
array.add("hello");
array.add("world");
array.add("java");
// 遍歷
Iterator it = array.iterator();
while (it.hasNext()) {
String s = (String) it.next();
System.out.println(s);
}
System.out.println("-----------");
for (int x = 0; x < array.size(); x++) {
String s = (String) array.get(x);
System.out.println(s);
}
}
}
上面我們使用了兩種方法對ArrayList集合進行了遍歷粮坞,輸出結果你肯定看出來了,對吧泉沾!
當然ArrayList集合也可以存儲自定義對象并遍歷捞蚂,大家有空可以練習一下
Vector類的使用
Vector類它有特有的功能:是什么呢?
添加功能
- public void addElement(Object obj)-
獲取功能
- public Object elementAt(int index)
- public Enumeration elements()下面我們來看他的特有功能怎么使用
public class VectorDemo {
public static void main(String[] args) {
// 創(chuàng)建集合對象
Vector v = new Vector();
// 添加功能
v.addElement("hello");
v.addElement("world");
v.addElement("java");
// 遍歷
for (int x = 0; x < v.size(); x++) {
String s = (String) v.elementAt(x);
System.out.println(s);
}
System.out.println("------------------");
//遍歷
Enumeration en = v.elements();
// 返回的是實現(xiàn)類的對象
while (en.hasMoreElements()) {
String s = (String) en.nextElement();
System.out.println(s);
}
}
}
輸出結果就不說了跷究。細心的我們可以發(fā)現(xiàn)姓迅,第二種遍歷的方法怎么像我們之前學的迭代器呢。沒錯public Enumeration elements()就相當于我們現(xiàn)在的迭代器所以在Enumeration接口中有兩個方法
- boolean hasMoreElements()
- Object nextElement()
所以說它的用法和迭代器的使用方法相同俊马,當然我們在使用中肯定會用迭代器而不用它了
LinkedList類的使用
在LinkedList類中丁存,它也有自己特有的功能,下面我們來了解
- 添加功能
- public void addFirst(Object e)
- public void addLast(Object e)
- 獲取功能
- public Object getFirst()
- public Obejct getLast()
- 刪除功能
- public Object removeFirst()
- public Object removeLast()
我們發(fā)現(xiàn)上面的添加獲取刪除功能它們都有一個xxFirst和xxLast方法柴我,這就是第一個和最后一個的意思啦解寝,當然使用起來也很方便的。我們來用用你就知道了艘儒。
public class LinkedListDemo {
public static void main(String[] args) {
// 創(chuàng)建集合對象
LinkedList link = new LinkedList();
// 添加元素
link.add("hello");
link.add("world");
link.add("java");
link.addFirst("javaee");
System.out.println("addFirst:" + link);
link.addLast("android");
System.out.println("addLast:" + link);
System.out.println("getFirst:" + link.getFirst());
System.out.println("getLast:" + link.getLast());
System.out.println("removeFirst:" + link.removeFirst());
System.out.println("removeLast:" + link.removeLast());
// 輸出對象名
System.out.println("link:" + link);
}
}