Map.Entry interface in java

java.util.Map.Entry, as I know, this is a package public static interfacein java.utilthat returns a map collection view, but as far as I am confused with the static interface and since it is Map.Entry, this is the internal interface, if so, how do we have internal static interfaces in java

Look at the people I'm embarrassed. Please help me in any way possible.

+5
source share
6 answers

The definition Entrytakes place inside the definition Map(allowed by java). Being staticmeans that you do not need an instance Mapto refer to Entry.

, Map.Entry . ,

Map<Integer, String> map = new HashMap<Integer, String>();

for (Map.Entry<Integer, String> entry : map.entrySet()) {
    Integer key = entry.getKey();
    String value = entry.getValue();
    // do something with key and/or value etc
    // you may also alter the entry value inside this loop via entry.setValue()
}
+8

.

, Java .

, . , .

. a Map.Entry a Map. API, -, , , -.

+2

:

public class Outer {
    public interface Bar {
        Bar get();
    }
}

- . , :

public class Outer {
    public static interface Bar {
        Bar get();
    }
}

, , , .

:

public class Tree {
    private static class Node {

    }
}

Node , , . , ? Node ? - . -, Node , , . -, Node API, () . . - , / Node, . , : API , .

, -/? , - Composite (, ) .

+2

, Map.


   /**
     * A map entry (key-value pair).  The <tt>Map.entrySet</tt> method returns
     * a collection-view of the map, whose elements are of this class.  The
     * <i>only</i> way to obtain a reference to a map entry is from the
     * iterator of this collection-view.  These <tt>Map.Entry</tt> objects are
     * valid <i>only</i> for the duration of the iteration; more formally,
     * the behavior of a map entry is undefined if the backing map has been
     * modified after the entry was returned by the iterator, except through
     * the <tt>setValue</tt> operation on the map entry.
     *
     * @see Map#entrySet()
     * @since 1.2
     */
    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 <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();
    }

. Static .

0

Java . . , Map.Entry , Map.

Mapimplementation ( TreeMap, HashMap) provides private implementations Map.Entrythat are not visible outside the class.

The Czech answer describes how to use Map.Entry.

0
source

Internal interfaces are implicitly public and static.

You can have internal interfaces as follows:

1.   interface A {
             .....
             .....
             interface B {
                          ....
                          ....
             }

     }



2.   class A {
              ....
              ....
              interface B {
                            ....
                            ....
              }

     }

You can access the above internal interface (B) on AB, where A is a class or interface in accordance with the above two cases.

For instance,

class x implements A.B
{
         ....
         ....
}
0
source

All Articles