初始化地图,列表等

时间:2015-02-22 04:01:46

标签: java arraylist maps

以下哪项是正确的:

Map<K,V> map = new HashMap<>();

HashMap<K,V> map = new HashMap<>();

甚至:

List<T> list = new ArrayList<>();

ArrayList<T> list = new ArrayList();

我很好奇是否有正确的方法,或者只是一个偏好的问题。我想知道这可能是愚蠢的,但我只是不确定。

2 个答案:

答案 0 :(得分:1)

做类似

的好处
Map map = new HashMap<>();

您的代码不依赖于HashMap的实现及其API。

如果您以后决定将HashMap替换为Map接口的另一个实现,例如EnumMap,则代码中唯一可以更改的部分就是该行。

Map map = new EnumMap<>();

如果你做了类似

的事情
HashMap map = new HashMap<>();

然后决定从HashMap更改为EnumMap,您必须:

1)遍历您的所有代码并将HashMap的每个实例更改为EnumMap

2)如果您依赖于HashMap而非EnumMap中存在的功能,请完全重新设计代码。也就是说,如果您依赖于Map不支持的API,则无需对代码进行其他修改即可轻松地从一种类型更改为另一种类型。

答案 1 :(得分:0)

如果可能的话(除非您为某个集合的特定实现或其他东西编写一些实用程序代码),您想使用该接口,即

List<String> list = new ArrayList<>();

这样,如果需要出现这种需求,切换实现会更容易,例如转移到LinkedList。