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异同点