贴两个学容器时的程序,复习起来方便。
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,也能迭代Set
Iterator<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("王五"));
//遍历key
Set<String> set1 = map.keySet();//为什么要这样用
Iterator<String> iter1 = set1.iterator();
while(iter1.hasNext()){
String key = iter1.next();
System.out.println(key + "-----" + map.get(key).getName());
}
//遍历value
Collection<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));
}
//foreach
for(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());
}
*/
}
}