Java笔记——java.util.Map.Entry

来源:互联网 发布:淘宝上的原厂汽车配件 编辑:程序博客网 时间:2024/05/30 19:32

Map.Entry 是Map声明的内部接口

public interface Map<K,V> {省略n行。。。interface Entry<K,V> {        /**         * Returns the key corresponding to this entry.         *         * @return the key corresponding to this entry         * @throws IllegalStateException implementations may, but are not         *         required to, throw this exception if the entry has been         *         removed from the backing map.         */        K getKey();        /**         * Returns the value corresponding to this entry.  If the mapping         * has been removed from the backing map (by the iterator's         * <tt>remove</tt> operation), the results of this call are undefined.         *         * @return the value corresponding to this entry         * @throws IllegalStateException implementations may, but are not         *         required to, throw this exception if the entry has been         *         removed from the backing map.         */        V getValue();        /**         * Replaces the value corresponding to this entry with the specified         * value (optional operation).  (Writes through to the map.)  The         * behavior of this call is undefined if the mapping has already been         * removed from the map (by the iterator's <tt>remove</tt> operation).         *         * @param value new value to be stored in this entry         * @return old value corresponding to the entry         * @throws UnsupportedOperationException if the <tt>put</tt> operation         *         is not supported by the backing map         * @throws ClassCastException if the class of the specified value         *         prevents it from being stored in the backing map         * @throws NullPointerException if the backing map does not permit         *         null values, and the specified value is null         * @throws IllegalArgumentException if some property of this value         *         prevents it from being stored in the backing map         * @throws IllegalStateException implementations may, but are not         *         required to, throw this exception if the entry has been         *         removed from the backing map.         */        V setValue(V value);        /**         * Compares the specified object with this entry for equality.         * Returns <tt>true</tt> if the given object is also a map entry and         * the two entries represent the same mapping.  More formally, two         * entries <tt>e1</tt> and <tt>e2</tt> represent the same mapping         * if<pre>         *     (e1.getKey()==null ?         *      e2.getKey()==null : e1.getKey().equals(e2.getKey()))  &amp;&amp;         *     (e1.getValue()==null ?         *      e2.getValue()==null : e1.getValue().equals(e2.getValue()))         * </pre>         * This ensures that the <tt>equals</tt> method works properly across         * different implementations of the <tt>Map.Entry</tt> interface.         *         * @param o object to be compared for equality with this map entry         * @return <tt>true</tt> if the specified object is equal to this map         *         entry         */        boolean equals(Object o);        /**         * Returns the hash code value for this map entry.  The hash code         * of a map entry <tt>e</tt> is defined to be: <pre>         *     (e.getKey()==null   ? 0 : e.getKey().hashCode()) ^         *     (e.getValue()==null ? 0 : e.getValue().hashCode())         * </pre>         * This ensures that <tt>e1.equals(e2)</tt> implies that         * <tt>e1.hashCode()==e2.hashCode()</tt> for any two Entries         * <tt>e1</tt> and <tt>e2</tt>, as required by the general         * contract of <tt>Object.hashCode</tt>.         *         * @return the hash code value for this map entry         * @see Object#hashCode()         * @see Object#equals(Object)         * @see #equals(Object)         */        int hashCode();    }     省略。。。}

如果不用Entry,我们获取Map总的信息的时候可以先获取key的信息,再根据Key值去找相应分value

public static void main(String[] args){        Map<String, String> mp = new HashMap<String, String>();        mp.put("A", "1");        mp.put("B", "2");        Set<String> set = mp.keySet();        if(set != null) {            Iterator<String> iter = set.iterator();            while(iter.hasNext()) {                String key = iter.next();                String value = mp.get(key);                System.out.println(key);                System.out.println(value);              }        }}

这样做可能会比较费时。我们可以用Entry先取出对应的key和value键值对,然后调用Entry中的getKey()和getValue()取出对应的key和value值

public static void main(String[] args){        Map<String, String> mp = new HashMap<String, String>();        mp.put("A", "1");        mp.put("B", "2");        Set<Entry<String, String>> entrySet =  mp.entrySet();        if(entrySet != null) {            Iterator<Entry<String, String>> iter = entrySet.iterator();            while(iter.hasNext()) {                Entry<String, String> entry = iter.next();                System.out.println(entry.getKey());                System.out.println(entry.getValue());            }        }    }

当然,也可以写的更加简洁一点

public static void main(String[] args){        Map<String, String> mp = new HashMap<String, String>();        mp.put("A", "1");        mp.put("B", "2");        for(Entry<String,String> entry : mp.entrySet()) {            System.out.println(entry.getKey());            System.out.println(entry.getValue());        }
0 0
原创粉丝点击