Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()、entrySet()等方法。 keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。 Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
Map这个类没有继承Iterable接口所以不能直接通过map.iterator来遍历(list,set就是实现了这个接口,所以可以直接这样遍历),所以就只能先转化为set类型,用entrySet()方法,其中set中的每一个元素值就是map中的一个键值对,也就是Map.Entry<K,V>了,然后就可以遍历了(迭代器和增强for循环都可以)。
例如:统计购物车的总金额用迭代器,因为set集合实现了Serializable接口,所以可以用迭代器来遍历整个集合,当然也可以用增强for循环,这都是可以的。现在遍历购买的商品集合时候用增强for循环,其实也可以用迭代器,只不过的得到i.next()的类型是Map.Entry<items,number>
@Items.java
//重写toString()
public String toString()
{
return "商品编号:"+this.getId()+",商品名称:"+this.getName();
}
Map这个类没有继承Iterable接口所以不能直接通过map.iterator来遍历(list,set就是实现了这个接口,所以可以直接这样遍历),所以就只能先转化为set类型,用entrySet()方法,其中set中的每一个元素值就是map中的一个键值对,也就是Map.Entry<K,V>了,然后就可以遍历了(迭代器和增强for循环都可以)。
例如:统计购物车的总金额用迭代器,因为set集合实现了Serializable接口,所以可以用迭代器来遍历整个集合,当然也可以用增强for循环,这都是可以的。现在遍历购买的商品集合时候用增强for循环,其实也可以用迭代器,只不过的得到i.next()的类型是Map.Entry<items,number>
@Items.java //重写toString() public String toString() { return "商品编号:"+this.getId()+",商品名称:"+this.getName(); } @Cart.java //遍历购物商品的集合 Set<Map.Entry<Items, Integer>> items= c.getGoods().entrySet(); for(Map.Entry<Items, Integer> obj:items) { System.out.println(obj); }
Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()、entrySet()等方法。 keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。 Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
Map这个类没有继承Iterable接口所以不能直接通过map.iterator来遍历(list,set就是实现了这个接口,所以可以直接这样遍历),所以就只能先转化为set类型,用entrySet()方法,其中set中的每一个元素值就是map中的一个键值对,也就是Map.Entry<K,V>了,然后就可以遍历了(迭代器和增强for循环都可以)。
例如:统计购物车的总金额用迭代器,因为set集合实现了Serializable接口,所以可以用迭代器来遍历整个集合,当然也可以用增强for循环,这都是可以的。现在遍历购买的商品集合时候用增强for循环,其实也可以用迭代器,只不过的得到i.next()的类型是Map.Entry<items,number>
遍历整个集合,前面的部分用迭代器,因为set集合实现了Serializable接口,所以可以用迭代器来遍历整个集合,当然也可以用增强for循环,这都是可以的。
对于现在遍历商品集合时候用增强·for循环,其实也可以用迭代器,只不过的得到i.next()的类型是Map.Entry<items,number>
在java中的foreach的用法:
for(type x : collection)
{
}
type为collection中的类型
定义SET去接受HashMap的实际的原因是因为HashMAP为无序存放的存储结构,他没有索引一说,只能靠一个键值去查找对应的值,而代码中定义了一个有序的SET,目的就是为了使用索引来更方便的遍历,SET的范型设定为MAP.entry,而MAP.entry其实是一个类型,类似int之类的类型,这个类型就是以键值对的形式存放数据的类型,在hashmap中自带一个叫做entrySet()的方法,就是用于将里面存放的数据转换为这种类型,使他可以放在有序表中,作为表项,然后就可以使用有序表可用的FOR 去遍历索引,所以可以使用增强FOR。