1,Set里不允許重復,常用的:
? HashSet就不說了。
? TreeSet里的元素是排過序的。自定義的類的對象默認只能存放一個,如果想放多個并且有排序,則要實現Comparable接口并加上那3個方法。詳見:TreeSet自定義排序
2, arraylist 底層是由數組組成的,在java中為了通用迭代器,所以性能上有一定的損失,用迭代器還不如for循環快.
?? 迭代器用在 底層由雙向指針鏈表構成的linkedlist 上,效率大大高于for循環。
如 果使用for循環遍歷 底層由雙向指針鏈表構成的linkedlist的話,他會每次都從頭遍歷一次,知道獲取你給定的下標,然后開始下一次遍歷,。越往后速度越慢。下標越大, 速度越慢。但是對于迭代器,他不是根據下標完成的遍歷,每取得一個對象后,他會根據這個對象的尾部指針取得下一個對象的內存位置,直接從內存位置取出內 容,這一點是for循環所不及的。
http://blog.csdn.net/java2000_net/archive/2009/01/16/3796064.aspx
3,
List要使用removeAll(Collection coll)
對象需實現equals()和hashCode()方法
4,用Collections.sort排序時可以把Comparator接口作為第二個參數
Collections.sort(stuGrade_List, new Comparator() {
public int compare(Object o1, Object o2) {
double c1 = ((StuGrade) o1).getChinese(); //獲得語文的成績,是doubel型
double c2 = ((StuGrade) o2).getChinese();
? if(c1>c2){
return 1;
}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
else if(c1=c2){
return 0;
}
else return -1;
}
});
參考:
TreeMap的使用及注意事項
? HashSet就不說了。
? TreeSet里的元素是排過序的。自定義的類的對象默認只能存放一個,如果想放多個并且有排序,則要實現Comparable接口并加上那3個方法。詳見:TreeSet自定義排序
2, arraylist 底層是由數組組成的,在java中為了通用迭代器,所以性能上有一定的損失,用迭代器還不如for循環快.
?? 迭代器用在 底層由雙向指針鏈表構成的linkedlist 上,效率大大高于for循環。
如 果使用for循環遍歷 底層由雙向指針鏈表構成的linkedlist的話,他會每次都從頭遍歷一次,知道獲取你給定的下標,然后開始下一次遍歷,。越往后速度越慢。下標越大, 速度越慢。但是對于迭代器,他不是根據下標完成的遍歷,每取得一個對象后,他會根據這個對象的尾部指針取得下一個對象的內存位置,直接從內存位置取出內 容,這一點是for循環所不及的。
http://blog.csdn.net/java2000_net/archive/2009/01/16/3796064.aspx
3,
List要使用removeAll(Collection coll)
對象需實現equals()和hashCode()方法
4,用Collections.sort排序時可以把Comparator接口作為第二個參數
Collections.sort(stuGrade_List, new Comparator() {
public int compare(Object o1, Object o2) {
double c1 = ((StuGrade) o1).getChinese(); //獲得語文的成績,是doubel型
double c2 = ((StuGrade) o2).getChinese();
? if(c1>c2){
return 1;
}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
else if(c1=c2){
return 0;
}
else return -1;
}
});
參考:
TreeMap的使用及注意事項