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