黑马程序员技术交流社区
标题:
Map集合的一些特点 ,泛型集合的一些疑惑。
[打印本页]
作者:
皮卫凯
时间:
2012-9-24 23:43
标题:
Map集合的一些特点 ,泛型集合的一些疑惑。
本帖最后由 皮卫凯 于 2012-9-25 10:33 编辑
Map特点
1,Map 集合是一个双列集合,Collectionshi 单列集合。
2,Map 一次存一对元素,通过键值对的形式,键和值有对应关系。Colletion是一次存一个元素。
3,Map集合必须要保证集合中键的唯一性。值可以重复。但必须保证元素的唯一性。不保证元素的唯一性获取就会出问题。
Map集合没有迭代器。迭代器是Collection集合具备的。
那要遍历Map集合中的元素,该怎么遍历呢。
HashMap<String,Integer> m =new HashMap<String,Integer>();
Set<Map.Entry<String,Integer>> entrySet =m.entrySet();
for(<Map.Entry<String,Integer>> entry : entrySet)
{
sysop{ entry.getKey()+":"+entryValue(); }
}
作者:
赵永康
时间:
2012-9-25 00:26
Set<Map.Entry<String,Integer>> entrySet =m.entrySet();
Iterator<Map.Entry<String,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<String,Integer> me=it.next();
String str=me.getKey();
Integer inte=me.getValue();
}
作者:
赵永康
时间:
2012-9-25 00:27
我估计你这样得到的会是null
作者:
宁振庄
时间:
2012-9-25 00:40
可以用3种方法遍历
import java.util.*;
public class Test {
public static void main(String[] args) {
Map<String,Integer> map =new HashMap<String,Integer>();
map.put("一", 1);
map.put("二", 2);
workByCollection(map);
workByKeySet(map);
workByEntry(map);
}
//常规的一种遍历值的方法
public static void workByCollection(Map<String, Integer> map){
Collection<Integer> c = map.values();
for (Iterator<Integer> it = c.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
//利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values
public static void workByKeySet(Map<String, Integer> map) {
Set<String> key = map.keySet();
for (Iterator<String> it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
System.out.println(map.get(s));
}
}
//通过Map嵌套的接口Map.Entry<K,V>,返回此映射中包含的映射关系的 Set 视图
public static void workByEntry(Map<String, Integer> map) {
Set<Map.Entry<String, Integer>> set = map.entrySet();
for (Iterator<Map.Entry<String, Integer>> it = set.iterator(); it.hasNext();) {
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) it.next();
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
}
}
复制代码
第三种比较强大也比较常用,楼上已经说啦
作者:
陈振兴
时间:
2012-9-25 01:31
本帖最后由 陈振兴 于 2012-9-25 01:33 编辑
Set<Map.Entry<String,Integer>> entrySet =m.entrySet();
//通过set集合获取了key值
//本来Iterator遍历
Iterator<Map.Entry<String,Integer>> it = entrySet.iterator();
//然后就是常规的while循环,判断集合里面到底有没有数据
while(it.hashNext()){
Map.Entry<String,Integer> entry = Map.Entry<String,Integer>it.next();//这一步就是遍历你的集合数据
System.out.println(entry.getKey()+"::"+entry.getValue());
}
//高级for写着就是方便
for(<Map.Entry<String,Integer>> entry : entrySet) //这是遍历啊
{
sysop{ entry.getKey()+":"+entryValue(); }
}
作者:
罗磊
时间:
2012-9-25 09:00
Map集合自身不能用迭代器!但是可以通过获取其 键或者键值对的关系 得到的集合!这个集合是一个set集合!可用迭代器去迭代!这样就可以迭代啦!
这个问题在毕老师的视频里也讲到啦!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2