ArrayLIst和Map

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));
		}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章