ArrayList:当您有多个设置器时如何arraylist.set

时间:2018-12-17 13:54:41

标签: java arraylist set

我目前有2节课。我的机器人:

struct Data{
   boost::intrusive::list_member_hook<> node;

   inline Data* get_next();
}

namespace bis = boost::intrusive;

using List = bis::list<Data,
        bis::member_hook<Data, bis::list_member_hook<>, &Data::node>
      >;

Data* Data::get_next() {
    return &*++List::s_iterator_to(*this);
}

和我的主要代码。 我遇到的问题是在尝试设置我的主班学位时。 我正在尝试做的事情类似于:

public class Bot {
    private int X;
    private int Y;
    private int degress;

    public int getX() {
        return X;
    }

    public int getY() {
        return Y;
    }

    public int getDegress() {
        return degress;
    }

    public void setX(int X) {
        this.X = X;
    }

    public void setY(int Y) {
        this.Y = Y;
    }
}

但是给了我这个错误“ ArrayList类型的set(int,Bot)方法不适用于参数(int,int)”

以及我的ArrayList的外观

bots.set(bots.get(1).getDegress(),+1);

所以总结一下。我怎么能用bots.set改变X,Y或Degress?

2 个答案:

答案 0 :(得分:3)

bots.set是一种ArrayList方法。要变异Bot实例,必须调用Bot方法。

应该是:

Bot bot = bots.get(1);
bot.setDegrees(bot.getDegrees()+1);

或者,当然,您的setDegrees类中需要一个Bot方法。

答案 1 :(得分:1)

bots.set(bots.get(1).getDegress(),+1);在此行上,您正在调用ArrayList类的Set方法,该方法用于替换列表中指定索引处的元素。它有2个参数,首先是要替换的元素的索引,然后是第二个要替换的元素。因此,在您的情况下,一个int和一个Bot类的实例。

要在您的degrees类对象中设置Bot,您首先必须从list bots获取它,并在bot类的对象上使用setDegrees()您的Bot课程似乎缺少此内容。

bots.get(1).setDegrees(bots.get(1).getDegress()+1);