Nic*_*las 2 java object hashmap treemap
通常,当您创建一个对象时,您在前面提供了相同的类型,如:
Scanner scanner = new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)
但声明一个HashMap对象和TreeMap遵循这样的不同语法.
Map m1 = new HashMap();
SortedMap sm = new TreeMap();
Run Code Online (Sandbox Code Playgroud)
是什么原因?我问我的教授.但他不知道答案.
但声明一个HashMap对象和TreeMap遵循这样的不同语法.
你不具备对.你可以写:
HashMap<String, Integer> map = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)
......只是你通常不这样做.
同样你可以写:
Object scanner = new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)
基本上,涉及两种类型:
它们不必相同,但构造的类型必须与变量类型兼容.它必须是类所支持的超类或接口.仅将Map
(或List
或其他)变量指定为接口类型的观点是,大多数代码应仅将其视为map/list/set/whatever.事实上,它恰好是一个HashMap
(或ArrayList
等等),是一个实现细节.
有关此内容的更多详细信息,请参阅"编程到接口" ...但请注意两种情况下的语法相同:
VariableType variableName = new ActualTypeBeingConstructed();
Run Code Online (Sandbox Code Playgroud)
我问我的教授.但他不知道答案.
这吓到我了......