gpt4 book ai didi

java - 为 Grid 类结构实现 java.util.Collection 是否正确?

转载 作者:行者123 更新时间:2023-12-01 12:04:48 27 4
gpt4 key购买 nike

我目前正在研究 Grid 类的自定义实现,因为我经常发现自己在很多程序中使用网格,并且在此类中实现大量操作比持续使用 2D 更方便数组或 ArrayList 的 ArrayList。

我正在考虑让 Grid 类实现 java.util.Collection 中的 Collection 接口(interface),但我遇到了一些方法实现的一些问题,这让我怀疑它是否适合实现给定 Grid 类性质的接口(interface)。

特别是,以下方法在我的网格中似乎没有正确的实现:

public int size();

public boolean isEmpty();

add(E e)

addAll(Collection<? extends E> c)

boolean retainAll(Collection<?> c)

其中许多在我的实现中并不完全起作用的原因是因为我决定使我的 Grid 类大小不可变(尽管不是元素本身),因为缩小网格可能会产生未指定的行为(我正在考虑只是砍掉必要的行/列并发出警告),并且因为网格强制使用矩形大小(因此锯齿状的行大小是通过用 null 填充剩余空间来处理的)。 p>

添加方法很难实现,因为我通常认为将对象添加到网格需要一个坐标来添加它。从技术上讲,我可以从上到下、从左到右扫描网格以查找第一个空方 block ,但这可能不是最终客户端将网格传递到仅接受 Collection 对象的函数所需的行为。

这些方法中的大多数确实都有某种形式的实现,我可以使用它在技术上可行,但它们不是我看到的 Grid 类的典型用法。

鉴于此,是否不适合实现 Collection?或者如果我添加 Javadoc 警告,继续执行奇怪的行为会更好吗?

最佳答案

您可以实现Collection,尽管它并不完美。由于您的网格是不可变的(或者只是网格大小?),因此只需为任何变异调用抛出 UnsupportedOperationException 即可。您的 Grid 类是否应该实现Collection取决于您想象它的使用方式。两种方式都有优点和缺点。

关于java - 为 Grid 类结构实现 java.util.Collection 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27700512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com