java如何将arraylist中的值放入抽象类中进行比较
我有一门课叫“模特”
class Model {
private ArrayList<Picture> pictures;
public ArrayList<Picture> getPictureList() { return pictures; }
}
(我有实现所有这些的方法,这只是一个例子)
那我有
abstract class Picture{
public boolean touches(Picture p) {}
}
我想让这个函数从about arraylist中提取值,与参数“p”进行比较,看看这两张图片是否相互接触。 我想用这样的东西
public boolean touches(Picture p) {
for (Picture picture : pictures) {
//compare values
}
}
我怎样才能将值从类“模型”中拉入抽象类图片中呢
# 1 楼答案
您已经有了
getPictureList()
方法,因此可以使用它:然而,更好的实现是删除
getPictureList()
,并用Picture getPicture(int i)
和int getNumberOfPictures()
替换它。这样,模型类的用户将无法访问内部ArrayList(这将允许他们直接操作它)那么您的代码将如下所示:
另一种方法是实现迭代器,即让
Model
实现Iterable<Picture>
接口那么您的代码将如下所示:
# 2 楼答案
所以我想回答我自己的问题,我不确定这是否会帮助任何人,但我想我无论如何都会把它贴在这里。基本上,我对这个问题的理解是错误的。
Model
类创建类型为Picture
的ArrayList。因此,Picture
类变量中已经存在这些值。我试图做的是在不必要的时候将整个ArrayList发送到类中。我需要做的是像这样从Model
类调用overlaps()
方法这样做的目的是让每个图片对照ArrayList中的每个其他图片检查自己,并确定它们是否重叠。(假设正确实现了重叠功能) 这在Java中是一个非常重要的概念,幸运的是我有一个朋友可以解释