Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从不同的类获取arraylist中的项_Java_Arraylist - Fatal编程技术网

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

Java 如何从不同的类获取arraylist中的项,java,arraylist,Java,Arraylist,我试图从另一个类中的arraylist中得到一个“点”。有一个制作人正在发送一个“出价”或点。但它必须先抓住要点,然后才能发送。initalBid()中的逻辑是,当市场(另一个类)调用initalBid()时,获取插槽0中的内容。还有一个producerCurve类,它通过AbstractCurve类创建生产者个人曲线,AbstractCurve类创建一般曲线总体思路:如何在initalBid方法中从arraylist内部获取项。 生产者initalBid(): 生产者曲线: public cl

我试图从另一个类中的arraylist中得到一个“点”。有一个制作人正在发送一个“出价”或点。但它必须先抓住要点,然后才能发送。initalBid()中的逻辑是,当市场(另一个类)调用initalBid()时,获取插槽0中的内容。还有一个producerCurve类,它通过AbstractCurve类创建生产者个人曲线,AbstractCurve类创建一般曲线总体思路:如何在initalBid方法中从arraylist内部获取项。

生产者initalBid():

生产者曲线:

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;
    }
}
import java.util.ArrayList;
公共抽象类AbstractCurve{
ArrayList myCurve=新的ArrayList();
公共抽象曲线(int-np,双m,双b,int-dx)
{

对于(int i=0;i请考虑保护ArrayList


或者,您可以将所有方法抽象为AbstractCurve,并将ArrayList放在基类中。在抽象类中,您还可以定义一个get来获取项(环绕ArrayList的get).

因为您需要从ArrayList获取元素,而ProducerCurve或多或少只是一个包装器,用于初始化ArrayList:我可能只是扩展ArrayList:

import java.util.ArrayList;
公共抽象类AbstractCurve扩展了ArrayList{
公共抽象曲线(int-np,双m,双b,int-dx){
对于(int i=0;i
然后您可以使用ArrayList上的方法:

公共点initalBid(){
如果(producer.size()>0){
返回生产者。获取(0);
}
返回null;
}
要在点上循环,可以使用collections APi:

public void loopOverBids(){
对于(点此点:制作人){
System.out.println(此点);
}
}

能否请你简化你的代码并具体一点?我在这篇文章中没有看到任何问题。请更清楚地说明你的问题是什么。这就是我想做的,但不要调用“索引”它本身。这可能吗?所以myCurve是一个点数组。你想得到一个特定的点吗?你想一直得到第一个点吗?我想让它每次都得到第一个点,因为initalBid()之后会有一个respondToBid()这将通过一个for循环。每次调用它都会得到下一个点。这非常有帮助!对于loopOverBids()有没有一种方法可以返回下一个点而不是打印出来?因为我有一个market类可以调用该方法来获取下一个点。如果有意义的话…是的。搜索并阅读ArrayList迭代器。一旦有了一个interator,你可以简单地调用iterator.next()来获取下一个点。
 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;
    }
}