为什么Java中的Map <>设计为需要两种类型; Map <>和HashMap <>?

qua*_*els 1 java interface hashmap map

我的主要语言是C#,虽然最近我一直在做更多的Java开发.在C#中,我可以像这样定义一个Dictionary:

using System.Collections.Generic;
Run Code Online (Sandbox Code Playgroud)

...

Dictionary<string, string> myDict = new Dictionary<string, string>();
Run Code Online (Sandbox Code Playgroud)

但是,如果我想在Java中创建一个类似的对象,我需要这样做:

import java.utils.Map;
import java.utils.HashMap;
Run Code Online (Sandbox Code Playgroud)

...

Map<String, String> myMap = new HashMap<String, String>();
Run Code Online (Sandbox Code Playgroud)

为什么Java设计Map<>为使用HashMap<>和两个不同的导入创建需要使用它?

只是好奇.

更新

我甚至从未想过Map可以成为一个界面.它不遵循为接口名称添加前缀的约定I.我很惊讶在那里没有使用这样的约定.

Sve*_*rev 5

Map是一个接口,虽然HashMap是具体的实现,就像TreeMap

BTW你可以只HashMap在你喜欢的时候使用:

HashMap<k,v> hashmap = new HashMap<k,v>();