黑马程序员技术交流社区
标题:
Map迭代
[打印本页]
作者:
沈佳龙
时间:
2012-10-12 11:24
标题:
Map迭代
本帖最后由 沈佳龙 于 2012-10-12 17:19 编辑
Map为什么不能直接实现迭代,要迭代应该怎么办??
作者:
柏占肖
时间:
2012-10-12 11:35
自己查下API吧 可以实现通过对键的迭代来间接的迭代Map
作者:
严海荣
时间:
2012-10-12 11:39
Map没有实现Iterator接口
要实现迭代就需要把它转换成Set集合,然后迭代
Map<String,String> map = new HashMap<String,String>();
map.put("02", "zhangsan2");
map.put("03", "zhangsan3");
map.put("01", "zhangsan1");
map.put("04", "zhangsan4");
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while(it.hasNext())
{
Map.Entry<String,String> me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println("key:"+key+" value:"+value);
}
复制代码
map迭代就是这么玩的
作者:
徐梦侠
时间:
2012-10-12 11:55
迭代需要获取迭代器iterator(),那么这个类就需要实现Iterator接口。而Map集合没有实现这个接口。如果Map想要实现迭代可以用它的两个方法entrySet() 和keySet(),它们返回的都是Set集合。例如:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
class MapTest{
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<String,Integer>();
hm.put("lisi1",21);
hm.put("zhangshan ",22);
//第一种取出方式 keySet
Set<String> keySet = hm.keySet();
//获取迭代器
Iterator<String> it = keySet.iterator();
//取出数据
while(it.hasNext()){
String str = it.next();
int name = hm.get(str);
System.out.println(str+".."+name);
}
System.out.println("--------------第二种方法取出");
//第二种取出方式 entrySet
Set<Map.Entry<String,Integer>> entrySet = hm.entrySet();
//获取迭代器
Iterator<Map.Entry<String,Integer>> iter = entrySet.iterator();
//获取数据
while(iter.hasNext()){
Map.Entry<String,Integer> me = iter.next();
String str = me.getKey();
int name = me.getValue();
System.out.println(str+".."+name);
}
}
}
作者:
李建强
时间:
2012-10-12 11:56
public class Test {
public static void main(String[] aa) {
Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
Set set = map.entrySet();
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
复制代码
Collection实现了Iterator接口,Map没有实现
如果你想的话,其实Map也可以自己写一个。
public interface Iterator {
boolean hasNext();
Object next();
void remove();
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2