集合類
數組Array和集合的區別:
(1)數組是大小固定的,並且同一個數組只能存放類型一樣的數據(基本類型/引用類型)
(2)JAVA集合可以存儲和操作數目不固定的一組數據。 (3)若程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。
聯繫:使用相應的toArray()和Arrays.asList()方法可以回想轉換。
ArrayList
常用api有:
1.get
2.set
3.add
4.remove
對象是object類型,四種方法可實現增刪改查
5.獲取長度 size
6.獲取位置indexof
LinkedList
ArrayList 和 LinkedList的區別
ArrayList 底層的實現是動態數組
LinkedList 底層是鏈表
區別: 查詢上, ArrayList效率比較高,linkedlist比較低
增刪上, linkedlist效率比較高,rrayList效率低
如果不知道增刪多還是查詢多就用, ArrayList
LinkedList 特有方法
特有方法
addFirst()
addLast()
removeFirst()
removeLast()
5) List集合遍歷的三種方式
a) 普通for循環
b) 增強for
c) 迭代器
Iterator it=a.iterator();
while(it.hasNext()) {
Object obj= it.next();
System.out.println(obj);
}
/*for (int i = 0; i < a.size(); i++) {
System.out.println(a.get(i));
}*/
for (Object object : a) {
System.out.println(object);
}
collection 規定的其他方法
clear(); isEmpty(); iterator(); toArray(); contains();
set
對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重複對象,set集合中的元素是唯一的,無序的
遍歷只有兩種方式
添加時遍歷集合判斷是否有重複的,默認根據地址(hashcode) 判斷,特殊情況需要重寫equals方法
map
泛型
泛型是一個很寬泛,複雜的概念,這裏做簡單介紹。
五) 泛型的簡單使用
ArrayList<User> alist = new ArrayList<User>();
alist只能存入 User類型的對象
get(int index)的返回值也是User類型
HashMap<String,User> hm = new HashMap();
hm可以的元素的key只能是String,value只能是User類
get(String key)的返回值也是User類型
關於泛型類/泛型接口/方法 後面會提到
爲了定義一個類爲泛型類型,需要將泛型類型放在類名之後,爲定義一個方法爲泛型類型,需要將泛型類型放在方法返回類型之前
這是關於別人寫的泛型的一篇博客
集合的操作類的幾個常用方法
1. sort
自定義類排序
1.實現comparable接口,添加泛型避免強轉
2.重寫compareTo方法
1.如果是int直接比較差值,返回結果
2.double類型可以通過if語句,三目運算,返回結果,也可以調用MAth.ceil()方法,向上取整(-0.5)他們的差值判斷???(先判斷相等)
int result=this.math-o.math;
result=result==0?this.chinese-o.chinese:result;
result=result==0?this.english-o.english:result;
return result;
2.reverse
反轉
3.binarysearsh
二分查找
4.max,min