如何从不同的类中获取arraylist中的项目

时间:2015-10-05 21:56:24

标签: java arraylist

我正试图从一个不同类别的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;
    }
}

2 个答案:

答案 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);
    }
}