java中的Map.Entry接口

java中的Map.Entry接口,java,collections,frameworks,Java,Collections,Frameworks,java.util.Map.Entry据我所知是java.util包中的公共静态接口 返回映射的集合视图,但到目前为止,我对静态接口感到困惑 既然它是Map.Entry,那么它是一个内部接口吗?如果是的话,我们如何在java中拥有内部静态接口 听着,我很困惑的人,请尽可能地帮助我。条目的定义恰好位于映射的定义之内(java允许)。保持静态意味着不需要Map的实例来引用条目 通过一个例子来演示如何使用Map.Entry。下面是在地图上迭代的方法 Map<Integer, String>

java.util.Map.Entry
据我所知是
java.util
包中的
公共静态接口
返回映射的集合视图,但到目前为止,我对静态接口感到困惑
既然它是Map.Entry,那么它是一个内部接口吗?如果是的话,我们如何在java中拥有内部静态接口


听着,我很困惑的人,请尽可能地帮助我。

条目的定义恰好位于
映射的定义之内(java允许)。保持
静态
意味着不需要
Map
的实例来引用
条目

通过一个例子来演示如何使用
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's value inside this loop via entry.setValue()
}
Map Map=newhashmap();
对于(Map.Entry:Map.entrySet()){
整数key=entry.getKey();
字符串值=entry.getValue();
//用钥匙和/或价值观等做某事
//您还可以通过entry.setValue()在这个循环中更改条目的值
}

真的没有什么可混淆的

是的,Java允许接口成为类或其他接口的成员

不,这并不意味着有什么特别的。它绝对不会改变您如何使用这样一个接口或如何使用它


它只更改该接口的名称,并在该接口及其封闭类型之间创建一个强大的概念链接。在这种情况下,
Map.Entry
表示
Map
的条目。API的设计者显然认为,通过将其设置为成员类型来强调这种连接是有意义的。

是的,它是接口的内部接口


/**
*映射条目(键值对)。Map.entrySet方法返回
*地图的集合视图,其元素属于此类。这个
*获取映射项引用的唯一方法是从
*此集合视图的迭代器。这些Map.Entry对象是
*仅在迭代期间有效;更正式地说,
*如果备份映射已被删除,则映射项的行为未定义
*在迭代器返回条目后修改,但通过
*映射项上的setValue操作。
*
*@见地图#入口集()
*@自1.2
*/
接口条目{
/**
*返回与此项对应的键。
*
*@返回此条目对应的密钥
*@Trows-IllegalStateException实现可能是,但不是
*如果条目已被删除,则必须引发此异常
*从背景地图中删除。
*/
K getKey();
/**
*返回与此项对应的值。如果
*已从备份映射中删除(由迭代器的
*删除操作),此调用的结果未定义。
*
*@返回与此条目对应的值
*@Trows-IllegalStateException实现可能是,但不是
*如果条目已被删除,则必须引发此异常
*从背景地图中删除。
*/
V getValue();
/**
*将与此条目对应的值替换为指定的
*值(可选操作)。(写入映射。)
*如果映射已被删除,则此调用的行为未定义
*从映射中删除(通过迭代器的删除操作)。
*
*@param value要存储在此条目中的新值
*@返回与条目对应的旧值
*@如果put操作失败,则抛出UnsupportedOperationException
*支持映射不支持
*@如果指定值的类无效,则引发ClassCastException
*防止其存储在备份映射中
*@如果支持映射不允许,则引发NullPointerException
*空值,并且指定的值为空
*@如果此值的某些属性
*防止其存储在备份映射中
*@Trows-IllegalStateException实现可能是,但不是
*如果条目已被删除,则必须引发此异常
*从背景地图中删除。
*/
V设定值(V值);
/**
*将指定的对象与此项进行相等性比较。
*如果给定对象也是一个映射项,则返回true,并且
*这两个条目表示相同的映射
*条目e1和e2表示相同的映射
*如果
*(e1.getKey()==null?
*e2.getKey()==null:e1.getKey().equals(e2.getKey())&;
*(e1.getValue()==null?
*e2.getValue()==null:e1.getValue().equals(e2.getValue())
* 
*这可以确保equals方法在多个应用程序中正常工作
*Map.Entry接口的不同实现。
*
*@param o要与此映射项进行相等性比较的对象
*@如果指定的对象等于此映射,则返回true
*入口
*/
布尔等于(对象o);
/**
*返回此映射项的哈希代码值。哈希代码
*地图条目e的定义为:
public class Outer {
    public static interface Bar {
        Bar get();
    }
}
*(e.getKey()==null?0:e.getKey().hashCode())^ *(e.getValue()==null?0:e.getValue().hashCode()) * *这确保了e1.equals(e2)意味着 *e1.hashCode()==e2.hashCode()用于任意两个条目 *e1和e2,按照总工程师的要求 *Object.hashCode的契约。 * *@返回此映射项的哈希代码值 *@see Object#hashCode() *@see Object#equals(Object) *@see#equals(对象) */ int hashCode(); }

有关接口的更多信息,请参阅本教程和本文。

示例:
public class Outer {
    public interface Bar {
        Bar get();
    }
}
public class Outer {
    public static interface Bar {
        Bar get();
    }
}
public class Tree {
    private static class Node {

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

     }



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

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