您的位置:首页 > 职场人生

黑马程序员---Map集合 学习笔记

2012-03-21 02:57 375 查看
---------------------- android培训java培训、期待与您交流! ----------------------
集合: Map:

           Map: 存储的是键值对的形式, 键唯一, 可以通过键查找值;

1.HashMap: 和hashSet原理相同, 都是用哈希算法去重复, HashMap在存储键值对的时候, 对key对象取哈希值, 然后查找是否有相同的哈希值对象, 如果没有就直接存入, 如果有哈希值相同的key对象, 那么就和哈希值相同的key对象进行equals()比较. 结果为true就存入, 结果为false就覆盖, 非线程同步.无序的,即元素存入和取出的顺序不一定一致.

           2.TreeMap: 底层数据结构是二叉树, 可以按照key对象的顺序进行排序, 如果不指定顺序则按照key对象的自然顺序, 或者也可以指定一个比较器顺序, 非线程同步.允许对Map集合中的键进行排序.

           3.HashTable: 数据结构也是哈希表.线程同步,因此效率较低.不能用null作为键值,被HashMap替代了.

           4.迭代Map集合:

              <1>使用keySet()方法得到Map集合中所有key对象组成的set集合;

                     遍历这个key对象就可以得到每个key对象;

                     然后用key对象获取Value;

                     原理:将Map转换成Set,再使用迭代器, key对象就等于是一个set集合;

                    思路: 将Map转换成Set,再使用迭代器.使用keySet()方法,将键存入一个Set集合,在使用迭代器进行遍历的过程中,用getValue()获取相应的值.

                                   如:

                                         Set set = map.keySet();

                                         for(Iterator it=set.iterator(); it.hasNext(); )

                                        {

                                                 String key = it.next();

                                                 System.out.println("key="+key+",value="+map.getValue(key));

                                        }

                     <2>entterySet(就是一个键值对):

                            使用entrySet()方法得到Map集合中的所有Entry对象组成的集合,遍历这个Set集合就可以得到没哟个Entry对象;

                            entrySet()方法,返回的是包含键值对映射关系的Set集合, 然后通过Entry对象的getkey()方, ,和getgetValue()方法得到key和Value对象;

如::

                                          Set<Map.Entry<k,v>> set = map.entrySet();

                                          for(Iterator it=set.iterator(); it.hasNext(); )

                                          {

                                                  Map.Entry<k,v> me = it.next();

                                                  System.out.println("key="+me.getKey()+",value="+me.getValue());

                                          }

---------------------- android培训java培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息