使用java和最佳用例有什么区别

时间:2014-03-04 14:15:38

标签: java

使用java和最佳用例之间的区别是什么 我无法理解这两个概念可以通过实例解释这两个概念的区别。 What Java Collection should I use?

Map<string> map =new Hashmap<string>(); 
Hashmap<string> map =new Hashmap<string>();  

哪种用法更好。

注意:任何人都可以为我的java集合和数据结构指导我最好的电子书

5 个答案:

答案 0 :(得分:3)

例如,一个区别是,如果您希望稍后将map更改为implements Map的其他类型,则在第二个示例中无法执行此操作。< / p>

快速示例:

Map<Type> map = new HashMap<>();
map = new TreeMap<>(); //:)

HashMap<Type> map = new HashMap<>();
map = new TreeMap<>(); //:_(

答案 1 :(得分:0)

使用Map<String> map = new HashMap<String>();,您使用的是一种简单的依赖注入形式。如果您使用的是HashMapTreeMap,则您的代码无需担心,因为您可以使用其通用界面。稍后如果要更改地图类型,则必须在变量声明中执行此操作。

答案 2 :(得分:0)

Mapinterface,而HashMapMap的具体实现。  因此,第二个构造将具有HashMap的功能,并且显然已经实现了Map。

但是,如果你将Map的这个实例传递给以Map为参数的函数,那么就没有区别了。

答案 3 :(得分:0)

没有真正的最佳做法。

使用界面Map<string> map = new Hashmap<string>();

  • 隐藏具体实施算法
  • 最重要的是界面,你反对的不是它如何做的

使用具体实施Hashmap<string> map = new Hashmap<string>();

  • 使用所有接口方法的具体实现,您可以使用一些特定于实现的方法

在它只是一个POO的问题后,我认为纯粹主义者只会使用界面,因为它更抽象,具体类型(算法)可以很容易更新。

但实际上,为每个类型的类创建一个接口对于你的项目来说真的很脏,并创建了多个无用的类/接口。所以这对我来说不是一个好主意。

总而言之,我更喜欢使用我真正需要的东西。如果保持通用是很重要的,我使用接口Map,但在大多数情况下,我不关心这个,我更喜欢这个容器不那么抽象,所以我更喜欢使用HashMap。

事实上,它更像是一个巨魔和围绕熊的讨论,而不是真正的回应。 每个开发人员都有自己的感觉。

答案 4 :(得分:0)

除非您需要指定必须使用该接口的某个实现,否则使用该接口始终是最佳做法。

这是因为它为未来提供了最大的灵活性 - 通过消除对无关紧要事物的依赖来增加封装。