1、List ,ArrayList, LinkedList
ArrayList,類似於數組結構,在隨機訪問元素方面較優,但在其中間插入和移除元素時效率較低
LinkedList,類似於鏈式結構,用過代價較低的插入和刪除操作,提供了優化的順序訪問。但在隨機訪問方面效率較低。
例:
import java.util.ArrayList;
import java.util.LinkedList;
public class ListTest {
public static void main(String[] args) {
ArrayList al = new ArrayList();
LinkedList ll = new LinkedList();
long time1 = System.currentTimeMillis();
for(int i = 0;i<100000;i++){
al.add(0, i);
}
long time2 = System.currentTimeMillis();
for(int i = 0;i<100000;i++){
ll.addFirst(i);
}
long time3 = System.currentTimeMillis();
System.out.println("arrayList:"+(time2-time1));
System.out.println("LinkedList:"+(time3-time2));
}
}
2、set HashSet TreeSet
a. 無序的集合
b. 不能有重複元素(需要重寫equals和hashCode)(此處不清楚看equals與==區別)
c. TreeSet 將元素存儲在紅-黑樹數據結構中,HashSet 使用的是散列函數
遍歷時:
Iterator<Student> it = xxset.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
public class Student implements Comparable{
private String name;
private Integer age;
public boolean equals(Object obj) {
Student st = (Student)obj;
return this.name.equals(st.getName())?true:false;
}
public int hashCode() {
// 此處返回任意值都可
return 1;
}
public String toString() {
return "name:"+name+"\t age:"+age;
}
public Student(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
3、Map HashMap 、 TreeMap 、 HashTable
a. 無序的集合
b.
不能有重複的key出現
public int compareTo(Object o) {
Student st = (Student)o;
return this.age>st.age?1:this.age==st.age?0:-1; }
遍歷時:
Map<String,String> m = new HashMap<String,String>();
Set<String> keys = m.keySet();
for(String key : keys){
System.out.println(m.get(key));
}
System.out.println("-------或者-------");
Collection values = m.values();
for(Object o : values){
System.out.println(o);
}
HashMap基於Hashtable實現,不同之處在於HashMap是非同步的,並且允許null(只能有一個),即null value和null key,Hashtable則不允許null
hashmap/hashset等凡是帶有hash字眼的均基於hashtable實現,沒帶hash字眼的如set/map均是基於紅黑樹實現,前者無序,後者有序
HashMap和HashTable異同點
LinkedList和ArrayList異同點