黑马程序员技术交流社区
标题:
高手指教:关于Java.Map的遍历方法
[打印本页]
作者:
王小丑
时间:
2013-2-2 18:51
标题:
高手指教:关于Java.Map的遍历方法
本帖最后由 张向辉 于 2013-2-4 21:49 编辑
Java.Map的遍历方法有很多种,集合的一个很重要的操作就是遍历,我知道最常用的一种如下 求高手能不能给出别的遍历方法 愿一起进步!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cn.tsp2c.liubao;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
*
* @author Administrator
*/
public class TestMap {
public static void main(String[] args) {
Map<String, Student> map = new HashMap<String, Student>();
Student s1 = new Student(“宋江”, “1001″, 38);
Student s2 = new Student(“卢俊义”, “1002″, 35);
Student s3 = new Student(“吴用”, “1003″, 34);
map.put(“1001″, s1);
map.put(“1002″, s2);
map.put(“1003″, s3);
Map<String, Student> subMap = new HashMap<String, Student>();
subMap.put(“1008″, new Student(“tom”, “1008″, 12));
subMap.put(“1009″, new Student(“jerry”, “1009″, 10));
map.putAll(subMap);
work(map);
workByKeySet(map);
workByEntry(map);
}
这是最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很重要,这是我们最熟悉的!
这种方法最大的缺点就是灵活性不高,求高手给出一种灵活性高的方法!
作者:
杨浩
时间:
2013-2-2 19:21
本帖最后由 杨浩 于 2013-2-2 21:32 编辑
Map map = new HashMap();
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
}
复制代码
JDK1.5中,应用新特性For-Each循环
Map m = new HashMap();
for(Object o : map.keySet()){
map.get(o);
}
复制代码
返回的 set 中的每个元素都是一个 Map.Entry 类型。
private Hashtable<String, String> emails = new Hashtable<String, String>();
另外 我们可以先把hashMap 转为集合Collection,再迭代输出,不过得到的对象
//方法一: 用entrySet()
Iterator it = emails.entrySet().iterator();
while(it.hasNext()){
Map.Entry m=(Map.Entry)it.next();
logger.info("email-" + m.getKey() + ":" + m.getValue());
}
复制代码
方法二:jdk1.5支持,用entrySet()和For-Each循环()
for (Map.Entry<String, String> m : emails.entrySet()) {
logger.info("email-" + m.getKey() + ":" + m.getValue());
}
复制代码
方法三:用keySet()
Iterator it = emails.keySet().iterator();
while (it.hasNext()){
String key;
key=(String)it.next();
logger.info("email-" + key + ":" + emails.get(key));
}
复制代码
方法五:jdk1.5支持,用keySEt()和For-Each循环
for(Object m: emails.keySet()){
logger.info("email-" + m+ ":" + emails.get(m));
}
Map aa = new HashMap();
aa.put("tmp1", new Object());
//追加 替换用同样的函数.
aa.remove("temp1");
//删除
for (Iterator i = aa.values().iterator(); i.hasNext(); ) { Object temp = i.next(); }
//遍历
复制代码
来个完整的,包含TreeSet的元素内部排序的
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
HashMap<Object,Object> hash = new HashMap<Object,Object>();
TreeMap<Object,Object> treeMap = new TreeMap<Object,Object>();
list.add("a");
list.add("b");
list.add("c");
hash.put(3, 3);
hash.put(4, 4);
hash.put(5, 5);
hash.put(6, 6);
hash.put(1, 1);
hash.put(2, 2);
treeMap.put(1, 1);
treeMap.put(2, 2);
treeMap.put(3, 3);
treeMap.put(4, 4);
treeMap.put(5, 5);
treeMap.put(6, 6);
//list遍历
for(String m: list){
System.out.println(m);
}
// hashmap entrySet() 遍历
for(Map.Entry<Object,Object> m: hash.entrySet()){ System.out.println(m.getKey()+"---"+m.getValue());
}
//hashmap keySet() 遍历
for(Object m: hash.keySet()){ System.out.println(m+"---"+hash.get(m));
}
// treemap keySet()遍历
for(Object m: treeMap.keySet()){
System.out.println(m+"---"+treeMap.get(m));
}
}
复制代码
作者:
铿锵科技
时间:
2013-2-2 22:32
Set<String> keySet=Map.keySet();//取得你的map的Key值的集合
//Collection<Student> stu=stuMap1.values();
//System.out.println(keySet);
//System.out.println(stu);
for(String s:keySet){//遍历
System.out.println(s+" "+Map.get(s));输出你的集合的Key值和Key对应的值
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2