从 Set 中删除“第一个”对象
在某些情况下,我需要逐出Java中最古老的元素。该集合是使用LinkedHashSet
实现的,这使得这很简单:只需摆脱集合的迭代器返回的第一个元素:Set
Set<Foo> mySet = new LinkedHashSet<Foo>();
// do stuff...
if (mySet.size() >= MAX_SET_SIZE)
{
Iterator<Foo> iter = mySet.iterator();
iter.next();
iter.remove();
}
这很丑陋:如果我使用a,则可以使用3行来做一些我可以用1行做的事情(出于其他原因,a在这里不是一个选项):SortedSet
SortedSet
if (/*stuff*/)
{
mySet.remove(mySet.first());
}
那么有没有一种更简洁的方法可以做到这一点,而无需:
- 更改实现,或
Set
- 编写静态实用程序方法?
任何利用番石榴的解决方案都很好。
我完全知道集合没有固有的排序。我询问的是删除迭代顺序定义的第一个条目。