【发布时间】:2018-03-08 10:38:56
【问题描述】:
我需要一个固定大小为 n 的 LinkedHashSet ,这样当我们插入第 n+1 个元素时,第一个元素会被自动删除并在末尾插入新元素。
LinkedHashSet <Integer> = new LinkedHashSet <Integer> () ;
我应该如何实现构造函数来固定大小?
【问题讨论】:
-
您必须创建 LinkedHashSet 的子类并自己实现该逻辑。
-
没有实现,你需要实现 LinkedHashSet 并覆盖一些方法,如“add”
-
@Eran 我只是一个初学者。请帮忙。
-
在构造函数中,只取一个 maxLength 字段的值;它是
HashSet.add,您需要重写以实现您的逻辑(例如,调用 super.add,然后如果 size() > maxLength 删除第一个元素) -
LinkedHashSet有具体原因吗?遵循 Aaron 的建议并不难,但请注意LinkedHashSet处理添加已存在元素的方式(剧透:插入顺序未更新)。我不知道在这种情况下你想发生什么,但我的印象是,将LinkedList或其他一些Queue实现作为基类会做得更好。