通常,当你创建一个对象,你在前面 等提供的同类型:不同的语法创建的HashMap和TreeMap对象
Scanner scanner = new Scanner(System.in);
但在宣布一个HashMap对象和TreeMap遵循不同的语法是这样的。
Map m1 = new HashMap();
SortedMap sm = new TreeMap();
是什么原因?我问我的教授。但他不知道答案。
通常,当你创建一个对象,你在前面 等提供的同类型:不同的语法创建的HashMap和TreeMap对象
Scanner scanner = new Scanner(System.in);
但在宣布一个HashMap对象和TreeMap遵循不同的语法是这样的。
Map m1 = new HashMap();
SortedMap sm = new TreeMap();
是什么原因?我问我的教授。但他不知道答案。
但声明一个HashMap对象和TreeMap遵循这样的不同语法。
你不要有到。您可以写:
HashMap<String, Integer> map = new HashMap<String, Integer>();
...它只是你做不出来。
同样,你能写:
Object scanner = new Scanner(System.in);
基本上有两种类型的参与:
他们没有必须是相同的,但构造类型必须是分配兼容与变量类型。它必须是一个超类或该类支持的接口。只将Map
(或List
或其他)变量指定为接口类型的要点是,大多数代码只应将其视为map/list/set/whatever。其实是一个HashMap
(或ArrayList
等)的事实是一个实现细节。请参阅"programming to an interface"了解更多详情...但留意识到语法是一样的在两种情况下:
VariableType variableName = new ActualTypeBeingConstructed();
我问我的教授。但他不知道答案。
这让我害怕......
感谢您的答案。我正在看那个线程。 – Nicholas 2012-08-13 05:58:20
SortedMap
是一个接口,所以你不能实例化它。这就是为什么我们创建一个子类对象TreeMap
,它实现了这个接口并将其分配给接口对象SortedMap
,以便它可以使用子类和父类两个类的函数。
有趣的是,当我声明时发生了什么这些对象。谢谢。 – Nicholas 2012-08-13 05:54:49
Map是一个接口(或更一般的类) - TreeMap是实现Map(或更具体的类)的东西。
例如List是一个通用接口,ArrayList的实现列表,所以你可以说
List<Obj> list = new ArrayList<Obj>();
// or
ArrayList<Obj> list = new ArrayList<Obj>();
// but not
ArrayList<Obj> list = new List...
如果你的教授真的不能回答这个问题,你真的需要得到一个新的教授!
还可以声明
HashMap m1 = new HashMap();
TreeMap sm = new TreeMap();
地图是由HashMap的(和TreeMap)实现的接口。您可以将任何实现Map接口的对象分配给一个映射为decalared的变量。类似于接口TreeMap。
在java中你有一个类和接口的层次结构。一类是分配给任何“父”类它实现
一个更复杂的例子任意一个接口是Swingclass JTextField的 这里的层次结构是
Component
Containter
JContainer
JTextComponent
JTextField
所以
Component c1 = new JTextField();
Containter c2 = new JTextField();
JContainer c3 = new JTextField();
JTextComponent c4 = new JTextField();
都完美有效。 JTextField是一个JTextCompent,JContainer,容器和组件。
http://stackoverflow.com/questions/383947/what-does-it-mean-to-program-to-an-interface – 2012-08-13 05:47:54
谢谢。现在阅读。 – Nicholas 2012-08-13 05:51:08
顺便说一下,你也可以这样做:'Map sm = new TreeMap ()“这就表示你想要排序键,但实际上并不需要任何利用它的方法。情况是,如果代码只需要输入/获取条目,但是您打算以易于阅读的方式将其打印出来,方便按顺序打印条目。 –
yshavit
2012-08-13 06:13:23