Array和ArrayList的區別?
1、Array可以包含基本類型也可以包含對象類型,ArrayList只能包含對象類型
但是需要注意的是:Array數組在存放的時候一定是同種類型的元素。ArrayList就不一定了,因爲ArrayList可以存儲Object。
2、Array大小是固定的,ArrayList大小是動態變化的
ArrayList的空間是動態增長的,如果空間不夠,它會創建一個空間比原空間大約0.5倍的新數組,然後將所有元素複製到新數組中,接着拋棄舊數組。而且,每次添加新的元素的時候都會檢查內部數組的空間是否足夠。(比較麻煩的地方)。
3、ArrayList提供了更多的方法和特性。比如:addAll(),removeAll(),iterator()等等。
對於基本類型數據,集合使用自動裝箱來減少編碼工作量。但是,當處理固定大小的基本數據類型的時候,這種方式相對比較慢。
小tip:
ArrayList不適宜增加、刪除,可使用LinkedList
換句話說,ArrayList的實現用的是數組,LinkedList是基於鏈表,ArrayList適合查找,LinkedList適合增刪
ArrayList和Map的使用
// ArrayList定義
/*
* add(值) 增加
* remove(下標) 刪除
* set(下標,值) 修改
* get(下標) 查看
* size() 獲取長度
*/
ArrayList<String> aLists = new ArrayList<String>();
aLists.add("小明");
aLists.add("小紅");
aLists.add("張三");
System.out.println(aLists.size());
aLists.remove(1);//按照索引刪除
System.out.println(aLists.size());
aLists.add(0,"張三");
System.out.println(aLists.get(2));
aLists.set(1, "小谷");
System.out.println(aLists.get(1));
for(String a:aLists) {
System.out.println(a);
}
System.out.println("=========================");
for(int i=0;i<aLists.size();i++) {
System.out.println(aLists.get(i));
}
System.out.println("===========集合轉數組==============");
// 集合轉數組
String[] strArr = aLists.toArray(new String[0]);
for(String s:strArr) {
System.out.println(s);
}
// 數組轉集合
List<String> asListTwo = Arrays.asList(strArr);
/*
* Map使用
* put(k,v)增加元素
* remove(k) 刪除元素
* replace(k,v) 修改元素
* get(k) 查看元素
* size() 獲取長度
*/
Map<String,String> students = new HashMap<String,String>();
students.put("name", "張三");
students.put("age", "29");
students.put("job", "tester");
//students.remove("age");刪除年齡
students.replace("age", "30");
System.out.println(students.get("age"));
System.out.println("==================第一種遍歷方式Collection==========");
// 第一種遍歷方式,無索引不能用for循環
Collection c = students.values();
Iterator it = c.iterator();//將COLLECTION對象放入迭代器
while(it.hasNext()) {
System.out.println(it.next());
}
System.out.println("===========第二種遍歷,通過key、value=======");
// 第二種遍歷,通過key、value
Collection c1 = students.entrySet();//將所有的鍵值對作爲一個collection對象返回
Iterator it1 = c1.iterator();
while(it1.hasNext()) {
Entry entry = (Entry)it1.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
System.out.println("======第三種通過key進行遍歷");
// 第三種遍歷方式,通過key
Collection c2 = students.keySet();//將所有的key作爲collection的對象
Iterator it2 = c2.iterator();
while(it2.hasNext()) {
String key = (String)it2.next();
System.out.println(key+":"+students.get(key));
}