增强for循环,Map,集合应用
3. 增強for循環
1) 作用:
?對存儲對象的容器進行迭代??
2)? jdk5以前怎么迭代
3) 增強for循環迭代數組
String [] arr = {"a", "b","c"};?? //數組的靜態定義方式,只試用于數組首次定義的時候
// 傳統方式
for(int i=0; i<arr.length; i++) {
??? // i依次表示數組的角標
??? String s =arr[i];
??? System.out.println(s);
}
System.out.println("-------------------------------------");
// 在jdk5中我們可以使用增強for循環迭代
// 增強for循環括號里寫兩個參數,第一個是聲明一個變量,變量類型必須是數組元素的類型
// 第二個就是需要迭代的容器
// for循環會循環容器的length次, 每次都將容器的第n-1個元素賦值給聲明的變量
for(String s : arr) {
??? // 循環體, 執行arr.length
??? // 每次都將arr中的第n-1個元素給s
??? System.out.println(s);?? //
}
?
4) 單列集合 Collection
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
?
// 傳統方式1
/* 1.獲得迭代器
Iterator iter = list.iterator();
// 2.循環判斷迭代器是否有下一個
while(iter.hasNext()) {
??? String str= (String) iter.next(); // 將迭代器的指針移向下一個,并將迭代當前指向的元素返回
??? System.out.println(str);
}
*/
// 傳統方式2
for(Iterator iter=list.iterator(); iter.hasNext(); ){
??? String s =(String) iter.next();
??? System.out.println(s);
}
System.out.println("--------------------------------");
// 增強for循環, 沒有使用泛型的集合能不能使用增強for循環迭代?能
for(Object obj : list) {
??? String s=? (String) obj;
??? System.out.println(s);
}
?
5) 雙列集合 Map
Map map = new HashMap();
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
?
// 傳統方式迭代1
// 1. 獲得所有的key
Set keys = map.keySet();
// 2.迭代keys獲得所有的key
Iterator iter = keys.iterator();
while(iter.hasNext()) {
??? String key= (String) iter.next(); // a b c
??? // 3.根據key獲得對應的value
??? Stringvalue = (String) map.get(key);
??? System.out.println(key+ "=" + value);
}
System.out.println("---------------------------------");
// 傳統方式2,必須掌握這種方式
// 1.獲得所有的鍵值對Entry對象
Set entrys = map.entrySet();
// 2.迭代出所有的entry
iter = entrys.iterator();
while(iter.hasNext()) {
??? Map.Entryentry = (Entry) iter.next();
??? // 分別獲得key和value
??? String key= (String) entry.getKey();
??? Stringvalue = (String) entry.getValue();
??? System.out.println(key+ "=" + value);
}
System.out.println("-------------------------------------");
System.out.println("增強for循環迭代,");
// 增強for循環迭代,
// 原則上map集合是無法使用增強for循環來迭代的,
// 因為增強for循環只能針對實現了Iterable接口的集合進行迭代
// Iterable是jdk5中新定義的接口,就一個方法iterator方法
// 只有實現了Iterable接口的類,才能保證一定有iterator方法
// java有這樣的限定是因為增強for循環內部還是用迭代器實現的
?
// 而實際上,我們可以通過某種方式來使用增強for循環
for(Object obj : map.entrySet()) {
??? // obj 依次表示Entry
??? Map.Entryentry = (Entry) obj;
??? System.out.println(entry.getKey()+ "=" + entry.getValue());
}
6)集合迭代注意問題
// 在使用迭代器迭代集合的過程中,不能對集合進行增刪操作
@Test
public void test4() {
??? List list =new ArrayList();
???
??? list.add("wangwu");
??? list.add("zhangsan");
??? list.add("lisi");
?
??? Iteratoriter = list.iterator();
??? while(iter.hasNext()){
?????? Stringname = (String) iter.next();
?????? if("wangwu".equals(name)){
?????????? // 從集合中刪掉
?????????? //list.remove(name);
?????????? // 迭代過程中刪除元素需要調用迭代器的方法
?????????? iter.remove();??? // 刪除我迭代的集合被我迭代的最后一個元素
?????? }
??? }
// 1 2 4
??? System.out.println(list.size());
}
?
@Test
public void test5() {
??? List list =new ArrayList();
???
??? list.add("aa");
??? list.add("bb");
???
??? // 使用ListIterator迭代器
??? ListIteratorlistIterator = list.listIterator();
??? while(listIterator.hasNext()){
?????? listIterator.next();
?????? // 迭代過程中增加元素
?????? listIterator.add("cc");
??? }
??? System.out.println(list.size());
}
7) 增強for循環注意問題
//在使用增強for循環時,不能對元素進行賦值
int[] arr = {1,2,3};
?
for(int num : arr) {
??? num = 0;
}
?
System.out.println(arr[1]);
?
總結
以上是生活随笔為你收集整理的增强for循环,Map,集合应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国汽车工业工程信息中心是干什么的
- 下一篇: pppd-876(pppd 406)