有关Java Util Map Entry类的问题

时间:2018-11-24 08:45:29

标签: java collections

如果我仅声明import java.util.*;,则无法使用Entry类,这会在Entry Class的以下代码中引发编译时异常 输入类出现错误“找不到符号”

Set<Entry<String, Integer>> ent = map1.entrySet();
        for(Entry<String,Integer> key: ent){
           System.out.println(" count : "+key.getValue()+" : "+key.getKey() );
        }

但是如果我这样声明如下

import java.util.*;
import java.util.Map.Entry;

现在它将不会引发任何编译时错误。为什么会这样?

所以我的问题是:为什么我们已经声明了“ import java.util.Map.Entry;

时又分开声明了import java.util.*;

1 个答案:

答案 0 :(得分:1)

起初,程序包看起来是分层的,但不是

例如,Java API包括java.awt包,java.awt.color包,java.awt.font包以及许多其他以java.awt开头的包。

但是,java.awt.color软件包,java.awt.font软件包和其他java.awt.xxxx软件包未包含在java.awt软件包中。前缀java.awt(Java抽象窗口工具包)用于许多相关的软件包,以使关系显而易见,但不显示包含关系。

导入java.awt。*会导入java.awt包中的所有类型,但不会导入java.awt.color,java.awt.font或任何其他java.awt.xxxx包。

如果计划使用java.awt.color中的类和其他类型以及java.awt中的类和其他类型,则必须导入两个包及其所有文件:

import java.awt.*;
import java.awt.color.*;

为更清楚起见,您可以参考此link