黑马程序员技术交流社区

标题: entry理解? [打印本页]

作者: 李柯    时间: 2012-3-28 13:02
标题: entry理解?
大家如何理解Map集合中的entry?
作者: 唐林渊    时间: 2012-3-28 13:18
entry表示一组的意思  表示键值对的形式    而keyset表示的只是一个key,要想获取另一半要通过get(key)得到另一半.
作者: izwj    时间: 2012-3-28 13:26
entrySet方法返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法访问Map中的的键元素和值元素
作者: 贠(yun)靖    时间: 2012-3-28 13:44
Map 是一个接口, Entry也是一个接口  只不过这个接口是在Map类中定义的 而且该内部接口还是一个static的接口  所以可以直接用Map.Entry调用Entry接口中的方法
  之所以把Entry接口定义在Map接口中 是因为在取map集合中的元素时可以直接访问到     
  还有就是 entrySet方法返回 Map 键和值所对应的关系  把这种关心封装成对象 并转换到Set集合中 所以就可以使用迭代器取出其中的关系对象(元素) 在通过
   getKey 和getValue获取键和值
作者: yangshang1    时间: 2012-3-28 18:01
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());
            }
        }
  
}

作者: 邵中国    时间: 2012-3-28 20:58
自从把Map.Entry当成一个类后,我对map集合的理解比以前清楚多了
作者: 姚伟涛    时间: 2012-3-28 21:02
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());
        }
    }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2