A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李柯 中级黑马   /  2012-3-28 13:02  /  3008 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家如何理解Map集合中的entry?

6 个回复

倒序浏览
entry表示一组的意思  表示键值对的形式    而keyset表示的只是一个key,要想获取另一半要通过get(key)得到另一半.
回复 使用道具 举报
entrySet方法返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法访问Map中的的键元素和值元素
回复 使用道具 举报
Map 是一个接口, Entry也是一个接口  只不过这个接口是在Map类中定义的 而且该内部接口还是一个static的接口  所以可以直接用Map.Entry调用Entry接口中的方法
  之所以把Entry接口定义在Map接口中 是因为在取map集合中的元素时可以直接访问到     
  还有就是 entrySet方法返回 Map 键和值所对应的关系  把这种关心封装成对象 并转换到Set集合中 所以就可以使用迭代器取出其中的关系对象(元素) 在通过
   getKey 和getValue获取键和值
回复 使用道具 举报
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


public class EnitySetMap {
        public static void main(String[] args) {
                Map map=new HashMap();
               
                map.put("asdf",1);
                map.put("ggw",2);
                  //将Map转换为Map.Entry
            Set set=map.entrySet();
            //为了能让集合能按照值进行排列,这里把集合set转为Map.Entry类型的数组。
            Map.Entry[]  entries=(Map.Entry[]) set.toArray(new Map.Entry[set.size()] );
            //按照指定的比较器和指定的排序规则对集合里的Map.Entry进行排序,这里是按照值从小到大的排序。
            Arrays.sort(entries, new Comparator(){
                    @Override
                    public int compare(Object o1, Object o2) {
                             Integer value1=(Integer) ((Map.Entry)o1).getValue();
                             Integer value2=(Integer) ((Map.Entry)o2).getValue();
                             return value1.compareTo(value2);
                    }
                   
            });
            for(Map.Entry m:entries)
            {
                    System.out.println(m.getValue());
            }
        }
  
}
回复 使用道具 举报
自从把Map.Entry当成一个类后,我对map集合的理解比以前清楚多了
回复 使用道具 举报
public static void work(Map<String, Student> map) {
        Collection<Student> c = map.values();
        Iterator it = c.iterator();
        for (; it.hasNext();) {
            System.out.println(it.next());
        }
    }
  //利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性!!
    public static void workByKeySet(Map<String, Student> map) {
        Set<String> key = map.keySet();
        for (Iterator it = key.iterator(); it.hasNext();) {
            String s = (String) it.next();
            System.out.println(map.get(s));
        }
    }
  //比较复杂的一种遍历在这里,呵呵~~他很暴力哦,它的灵活性太强了,想得到什么就能得到什么~~
    public static void workByEntry(Map<String, Student> map) {
        Set<Map.Entry<String, Student>> set = map.entrySet();
        for (Iterator<Map.Entry<String, Student>> it = set.iterator(); it.hasNext();) {
            Map.Entry<String, Student> entry = (Map.Entry<String, Student>) it.next();
            System.out.println(entry.getKey() + "--->" + entry.getValue());
        }
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马