java - 声明一个队列/哈希集

标签 java hashmap queue

我正在学习 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/

相关文章:

java - 使用Java中的集合类进行排序不起作用

java - 无法使用外部库运行 java

java - 从 Java 中的 Map 中选择随机键和值集

javascript - 排队 promise

java - 哪种内存缓存实现需要花费最少的精力来构建

java - 不能从具有方法和变量的静态上下文中引用非静态方法

java - 具有软引用值的 HashMap 实现

java - 不使用正则表达式将字符串转换为映射

scala - 来自Scala编程的功能性队列

c++ - 通过引用传入优先队列