我正在学习 HashSets 和队列,但我很难理解为什么将 Queue/hashMap/其他 java.util 预定义数据结构声明为:
Set<T> h = new HashSet<T>();
Queue<T> q = new LinkedList<T>();
我明白 <T>
可以是整数/字符串/其他数据类型,这是为了确保我们将相同的数据类型添加到数据结构中。但是,我不明白为什么我必须将它声明为一个新的 HashMap,当它是一个 HashSet 时。我正在关注 this .有什么方法可以知道必须将 HashSet/Queue/others 声明为仅 HashMap/LinkedList?多谢!如果我必须解释/修改我的问题,请告诉我。
最佳答案
这称为接口(interface)编码而不是实现编码。拥有接口(interface)的引用使您可以灵活地在以后需要时更改实现。例如今天,您正在使用 HashSet 所以你定义它为:
Set<T> h = new HashSet<T>();
但是如果后来你意识到你需要一个LinkedHashSet
那么简单地替换它
Set<T> h = new LinkedHashSet<T>();
无需更改任何其他代码。这就是为什么这被称为良好的编码习惯。
关于java - 声明一个队列/哈希集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18690292/