【发布时间】:2011-12-05 08:12:44
【问题描述】:
我正在寻找元素数量有限的 SortedSet 实现。因此,如果添加了更多元素,则比较器将决定是否添加该项目并从 Set 中删除最后一个元素。
SortedSet<Integer> t1 = new LimitedSet<Integer>(3);
t1.add(5);
t1.add(3);
t1.add(1);
// [1,3,5]
t1.add(2);
// [1,2,3]
t1.add(9);
// [1,2,3]
t1.add(0);
// [0,1,2]
标准 API 中是否有一种优雅的方式来实现这一点?
我写了一个 JUnit 测试来检查实现:
@Test
public void testLimitedSortedSet() {
final LimitedSortedSet<Integer> t1 = new LimitedSortedSet<Integer>(3);
t1.add(5);
t1.add(3);
t1.add(1);
System.out.println(t1);
// [1,3,5]
t1.add(2);
System.out.println(t1);
// [1,2,3]
t1.add(9);
System.out.println(t1);
// [1,2,3]
t1.add(0);
System.out.println(t1);
// [0,1,2]
Assert.assertTrue(3 == t1.size());
Assert.assertEquals(Integer.valueOf(0), t1.first());
}
【问题讨论】: