貼兩個學容器時的程式,複習起來方便。
1.測試List、Set、Map集合的遍曆操作
/** * 測試List、Set、Map集合的遍曆操作 * 在以後遍曆容器時,List盡量採用索引遍曆,Set盡量採用迭代器 * */package com.bjsxt.test.collection;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class TestIterate {public static void testList(){List<Student> list = new ArrayList<Student>();list.add(new Student("張三"));list.add(new Student("李四"));list.add(new Student("王五"));list.add(new Student("趙六"));//使用索引遍曆for(int i=0;i<list.size();i++){Student stu1 = list.get(i);System.out.println(stu1.getName());}//使用增強for迴圈for(Student stu:list){System.out.println(stu.getName());}//使用迭代器,這種方式既可以迭代List,也能迭代SetIterator<Student> iter = list.iterator();while(iter.hasNext()){Student stu2 = iter.next();//返回當前元素,並且讓遊標指向下一個System.out.println(stu2.getName());}//或者也可用下面的方法for(Iterator<Student> iter2 = list.iterator();iter2.hasNext();){Student stu = iter2.next();System.out.println(stu.getName());}}public static void testSet(){Set<Student> set = new HashSet<Student>();set.add(new Student("張三"));set.add(new Student("李四"));set.add(new Student("王五"));set.add(new Student("趙六"));//使用增強型for迴圈for(Student stu:set){System.out.println(stu.getName());}//使用迭代器(既可以迭代List,也能迭代Set)Iterator<Student> iter = set.iterator();while(iter.hasNext()){Student stu = iter.next();System.out.println(stu.getName());}for(Iterator<Student> iter2 = set.iterator();iter2.hasNext();){Student stu = iter2.next();System.out.println(stu.getName());}}public static void testMap(){Map<String,Student> map = new HashMap<String,Student>();map.put("a", new Student("張三"));map.put("b", new Student("李四"));map.put("c", new Student("王五"));//遍曆keySet<String> set1 = map.keySet();//為什麼要這樣用Iterator<String> iter1 = set1.iterator();while(iter1.hasNext()){String key = iter1.next();System.out.println(key + "-----" + map.get(key).getName());}//遍曆valueCollection<Student> set2 = map.values();Iterator<Student> iter2 = set2.iterator();while(iter2.hasNext()){Student v = iter2.next();System.out.println(v.getName());}//遍曆Entry(索引值對)Set<Entry<String,Student>> set3 = map.entrySet();Iterator<Entry<String,Student>> iter3 = set3.iterator();while(iter3.hasNext()){Entry<String,Student> e = iter3.next();System.out.println(e.getKey() + "-----" + e.getValue());}}public static void main(String[] args) {testList();testSet();testMap();}}
2.利用Map對一個字串中的元素進行分類計數
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java.util.StringTokenizer;public class TestHashMap {public static void main(String[] args) {String str = "what a woderful day a what what";Map<String,Integer> map = new HashMap<String,Integer>();//構造容器StringTokenizer s = new StringTokenizer(str);while(s.hasMoreElements()){String strTemp = (String) s.nextElement();//將Object類型強制轉換為String型//儲存if(!map.containsKey(strTemp)){//空袋子map.put(strTemp, 1);//建立容器並放入值}else{map.put(strTemp, map.get(strTemp)+1);}}//方法1//遍曆map中的key,迭代器 +Keyset/get<推薦>Set<String> key = map.keySet();Iterator<String> iter1 = key.iterator();while(iter1.hasNext()){String str1 = iter1.next();System.out.println(str1 + "--->" + map.get(str1));}//用加強型for + Keyset/get for(String keys:key){System.out.println(key + "--->" +map.get(keys));}//方法2//使用entrySet + foreach + 迭代器Set<Map.Entry<String,Integer>> entry = map.entrySet();Iterator<Map.Entry<String,Integer>> iter2 = entry.iterator();while(iter2.hasNext()){Map.Entry<String, Integer> en = iter2.next();String key2 = en.getKey();Integer it1 = en.getValue();System.out.println(key2 + "--->" + map.get(key2));}//foreachfor(Entry<String,Integer> entry2:entry){String key3 = entry2.getKey();Integer it2 = entry2.getValue();System.out.println(key3 + "--->" + map.get(key3));}/*這是列印字串中的元素 * * while(s.hasMoreTokens()){System.out.println(s.nextToken());}*/}}