我正试图从一个不同类别的arraylist中获得一个“点”。有生产者发送'出价'或点。但它必须先发现它才能发送它。 initalBid()中的逻辑是当市场(另一个类)调用initalBid()时获取插槽0中的东西。还有一个producerCurve类,它通过AbstractCurve类创建生成器个人曲线,创建一个通用曲线。 一般想法:如何从我的initalBid方法中的arraylist中获取一个项目。
制片人initalBid():
public Point initalBid()
{
return producer.get(0);
}
制片人曲线:
public class ProducerCurve extends AbstractCurve
{
public ProducerCurve()
{
super(10, -1, 0, 1);
}
public ProducerCurve(int np, double m, double b, int dx)
{
super(np,m,b,dx);
}
}
摘要曲线:
import java.util.ArrayList;
public abstract class AbstractCurve {
ArrayList<Point> myCurve = new ArrayList<Point>();
public AbstractCurve(int np, double m, double b, int dx)
{
for(int i=0; i<np; i++)
{
int x = i*dx;
double y = m*x+b;
if(y<0) throw new IllegalArgumentException();
ArrayList<Point> myCurve = new ArrayList<Point>();
myCurve.add(new Point(x, y));
}
}
public boolean contains(Point p)
{
for(int index=0; index< myCurve.size(); index++ )
{
myCurve.equals(index);
{
return true;
}
}
return false;
}
}
答案 0 :(得分:0)
考虑使ArrayList受到保护。 https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
或者,您可以在AbstractCurve中将所有方法都抽象化,并在基类中使用ArrayList。在抽象类中,您还可以定义一个get来获取项目(围绕ArrayList&#39; s)。
答案 1 :(得分:0)
因为你需要从ArrayList获取元素,而ProducerCurve或多或少只是初始化ArrayList的包装器:我可能只是扩展ArrayList:
import java.util.ArrayList;
public abstract class AbstractCurve extends ArrayList<Point> {
public AbstractCurve(int np, double m, double b, int dx) {
for (int i = 0; i < np; i++) {
int x = i * dx;
double y = m * x + b;
if (y < 0) {
throw new IllegalArgumentException();
}
this.add(new Point(x, y));
}
}
}
然后你可以使用ArrayList上的方法:
public Point initalBid() {
if (producer.size() > 0) {
return producer.get(0);
}
return null;
}
对于循环点,您可以使用集合APi:
public void loopOverBids() {
for (Point thisPoint : producer) {
System.out.println(thisPoint);
}
}