java.util.Map.Entry

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());
        }

你可能感兴趣的:(java关键字)