---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ----------------------
List集合對象的特點:
List:
|----List:元素是有序的,元素可以重複。因爲該集合體繫有索引。
|----ArrayList:底層的數據結構使用的是數組結構。特點:查詢速度很快,但是增、刪稍慢(涉及下標的改變)。線程不同步。
|----LinkedList:底層使用的鏈表數據結構。特點:增刪的速度很快,查詢的速度稍慢。
|----vector:底層是數組數據結構。出現的早,在集合框架出現之前。無論增刪還是查詢都慢,被ArrayList淘汰,線程同步。
有關Vector的程序
import java.util.*;
/*
枚舉就是Vector特有的取出方式。
枚舉和迭代器很像
枚舉和迭代是一樣的。
因爲枚舉的名稱和方法的名稱都過長,所以被迭代器取代了,枚舉就沉默了。
*/
class VectorDemo{
public static void main(String[] args){
Vector v = new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en = v.elements();
while(en.hasMoreElements()){
System.out.println(en.nextElement());
}
}
}
有關LinkedList的程序
LinkedList特有方法
addFirst();
addLast();
獲取元素,但不刪除元素,如果集合中沒有元素,會出現NoSuchElementException
getFirst();
getLast();
獲取元素,但刪除元素。如果集合中沒有元素,會出現NoSuchElementException
removeFirst();
removeLast();
在JDK1.6出現了替代方法
添加元素
offerFirst();
offerLast();
獲取元素,但不刪除元素。如果集合中沒有元素,會返回null;
peekFirst();
peekLast();
獲取元素,但是會刪除元素。如果集合中沒有元素,會返回null。
pollFirst();
pollLast();
class LinkedListDemo{
public static void main(String[] args){
LinkedList link = new LinkedList();
link.addFirst("java01");
link.addFirst("java02");
link.addFirst("java03");
link.addFirst("java04");
link.addFirst("java00");
link.addLast("java05");
link.offerFirst("java007");
sop(link);
sop(link.removeFirst());
//遍歷
while(!link.isEmpty()){
sop(link.removeFirst());
}
}
public static void sop(Object obj){
System.out.println(obj);
}
}
使用LinkedList模擬一個堆棧或者隊列數據結構。
堆棧:先進後出,如同水杯。
隊列:先進先出,如同水管。First in First out ---- FIFO。
import java.util.*;
class Duilie{
private LinkedList link ;
//構造函數初始化的時候,建立一個鏈表。
Duilie(){
link = new LinkedList();
}
//每次都像頭部添加元素
public void myAdd(Object obj){
link.offerFirst(obj);
}
//保證從尾部取出元素
public Object myGet(){
return link.pollLast();
}
public boolean isNull(){
return link.isEmpty();
}
}
class DuilieDemo{
public static void main(String[] args){
Duilie d = new Duilie();
d.myAdd("java00");
d.myAdd("java01");
d.myAdd("java02");
d.myAdd("java03");
while(!d.isNull()){
System.out.println(d.myGet());
}
}
}
將自定義對象作爲元素存到ArrayList集合中,並去除重複元素。
import java.util.*;
/*
將自定義對象作爲元素存到ArrayList集合中,並去除重複元素。
比如:存人對象。同名同年齡,視爲同一個人。爲重複元素
思路:
1.對人描述
2.定義容器,將人存入。
3.取出
*/
class Person{
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String toString(){
return "("+name+":"+age+")";
}
//重寫equals方法是因爲ArrayList的contains方法的底層是由equals方法實現的。
public boolean equals(Object obj){
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
}
class ArrayListDemo{
public static void sop(Object obj){
System.out.println(obj);
}
//實現ArrayList元素的過濾。
public static ArrayList singleElement(ArrayList list){
ArrayList newList = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
Person p = (Person)it.next();
if(!newList.contains(p)){
newList.add(p);
}
}
return newList;
}
public static void main(String[] args){
ArrayList a = new ArrayList();
//添加對象
a.add(new Person("zhangsan",10));
a.add(new Person("lisi",14));
a.add(new Person("zhangsan",10));
a.add(new Person("zhaoliu",12));
a.add(new Person("lisi",14));
a.add(new Person("lisi",14));
sop(a);
sop(singleElement(a));
}
}
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
詳情請查看:http://edu.csdn.net