java list子类_List集合的子类ArrayList、LinkedList、Vector
List:有序,有索引,可重復。
|--ArrayList:底層數據結構是 數組結構.是線程不同步的(不安全的).查詢速度很快,但是增刪較慢。
構造一個初始容量為 10 的空列表,當放滿了10個元素后,以50%的長度加長集合容器的長度。
List 接口的大小可變數組的實現,即:可以直接指定容量大小
|--LinkedList:底層數據結構是 鏈表結構。對元素的增刪速度很快。但是查詢速度很慢。線程是不同步的。
|--Vector:底層數據結構也是數組結構,是線程同步的(安全的),效率低,被ArrayList替代了。1.2版本以后的集合都是不同步的
當放滿了10個元素后,以100%的長度加長集合容器的長度。
1,首先看一下LinkedList(ArrayList不做介紹)
package cn.java.collection.list;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
public class LinkedListDemo {
/*
LinkedList中的一些方法在JDK1.6以后有了替代。
addFirst();
addLast();
JDK1.6:
offerFirst();
offerLast();
getFirst();如果鏈表中沒有元素,獲取出現異常。NoSuchElementException
getLast();
JDK1.6:
peekFirst();如果鏈表中沒有元素,則返回null。
peekLast();
removeFirst();如果鏈表中沒有元素,獲取出現異常。NoSuchElementException
removeLast();
JDK1.6:
pollFirst();如果鏈表中沒有元素,則返回null。
pollLast();
*/
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
LinkedList link = new LinkedList();
//System.out.println("heihei……"+link.getFirst());//如果鏈表中沒有元素,獲取出現異常。NoSuchElementException
System.out.println("heihei……"+link.peekFirst());//jdk1.6以后的方法,如果鏈表中沒有元素,返回null
//System.out.println("heihei……"+link.removeLast());//如果鏈表中沒有元素,獲取出現異常。NoSuchElementException
System.out.println("heihei……"+link.pollLast());//jdk1.6以后的方法,如果鏈表中沒有元素,返回null
//鏈表的特有方法。添加.
link.addFirst("abc1");
link.addFirst("abc2");
link.addFirst("abc3");
link.addFirst("abc4");
//link.addLast("abc5");
for(int x=0; x
{
System.out.println("get:"+link.get(x));
}
/*for(int x=0; x
{
System.out.println("x="+x+"...size="+link.size());
System.out.println(link.removeFirst());
}*/
printColl(link);//這里也可以將Linkedlist作為一個參數傳遞給超類Collection,然后用Collection的獲取方法,如果使用了迭代器,則不能同時使用collection本身的增加,修改,刪除
while(!link.isEmpty())
{
System.out.println("remove:"+link.removeFirst());
}
System.out.println("----------------------");
link.add("weiba");
link.clear();
System.out.println(link);//打印出來為一個空的數組:[]
/*sop("getFirst:"+link.getFirst());//獲取元素,長度不改變。如果鏈表中沒有元素,獲取出現異常。NoSuchElementException
sop("getLast:"+link.getLast());
sop("get size="+link.size());
sop("removeFirst:"+link.removeFirst());//獲取元素,但是元素被刪除,長度會改變。如果鏈表中沒有元素,獲取出現異常。NoSuchElementException
sop("removeLast:"+link.removeLast());
sop("remove size="+link.size());*/
}
public static void printColl(Collection coll)
{
Iterator it = coll.iterator();
while(it.hasNext())
{
//此處不能調用coll.remove(it.next());否則會報java.util.ConcurrentModificationException
System.out.println("haha"+it.next());
}
}
}
上面類中main方法執行結果為:
heihei……null
heihei……null
get:abc4
get:abc3
get:abc2
get:abc1
hahaabc4
hahaabc3
hahaabc2
hahaabc1
remove:abc4
remove:abc3
remove:abc2
remove:abc1
----------------------
[]
2.vector集合
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
/*
Enumeration 此接口的功能與 Iterator 接口的功能是重復的
Iterator將Enumeration給替代了,
原因:Enumeration接口的方法名稱過長。所以郁郁而終。
*/
public class VectorDemoAndEnumeration {
public static void main(String[] args) {
Vector v = new Vector();
v.addElement("abc1");
v.addElement("abc2");
v.addElement("abc3");
v.addElement("abc4");
for (int i = 0; i < v.size(); i++) {
System.out.println("通用獲取方式:"+v.get(i));
}
//第二種取出方式
Enumeration en = v.elements();
while(en.hasMoreElements()){
System.out.println(en.nextElement());
}
System.out.println("----------------");
//第三種取出方式
Iterator it = v.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
此類執行結果為:
/*通用獲取方式:abc1
通用獲取方式:abc2
通用獲取方式:abc3
通用獲取方式:abc4
abc1
abc2
abc3
abc4
----------------
abc1
abc2
abc3
abc4*/
總結
以上是生活随笔為你收集整理的java list子类_List集合的子类ArrayList、LinkedList、Vector的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协变逆变java_Java中的逆变与协变
- 下一篇: java dto是什么_java项目中V