Iterable for Iterable with size() - 在Iterable和Collection之间?

时间:2012-10-03 18:37:29

标签: java collections size idioms iterable

CollectionIterable的大小,您可以为其检查包含,添加或删除元素。我有继承Iterable且具有大小的对象,但没有Collection的其他功能。我不想使用“不支持的”例外实现Collection方法。

IterableCollection之间是否有一些常用的中间课程,我可以让我的对象扩展?像'SizedIterable'之类的东西?或者,更一般地说,一个恰当的习语?

注意:是的,它实际上无法检查成员资格但是有一个大小。

2 个答案:

答案 0 :(得分:4)

为什么不创建自己的扩展Iterable的界面?这样,您就可以定义要添加到自定义对象的功能。

这样的事可能

public interface SizedIterable<T> extends Iterable<T> {
    int size();
}

答案 1 :(得分:1)

简短的回答是否定的。

答案很长:这个界面有需要吗?你有什么计划用它?除非你有许多不同的类具有相同(相当不寻常)的属性,并且某些方法依赖于它,否则我无法想到对此接口的任何明显需求。

您是否计划将此对象传递给标准库函数/类?这些方法实际上是调用size()吗?

如果是这样,你可能只需要实现Collection,然后根据需要选择add()/ remove()/ contains()/ etc。

如果没有,并且你真的需要这个界面,扩展Iterable是一个很好的方法。

e.g。

public interface SizedIterable<T> extends Iterable<T> {
    public int size();
}