Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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 阵列列表或操作系统有更好的方法吗?_Java_Arrays_Multidimensional Array_Arraylist - Fatal编程技术网

Java 阵列列表或操作系统有更好的方法吗?

Java 阵列列表或操作系统有更好的方法吗?,java,arrays,multidimensional-array,arraylist,Java,Arrays,Multidimensional Array,Arraylist,多亏了这里的优秀员工,我成功地得到了一些半可行的东西,仍然有一些错误,但也许你们可以帮我解决。到目前为止,所提供的解决方案中没有一个是完全匹配的(这就是为什么我没有投票支持他们),但它们确实帮助我以新的方式看待事情,并推动事情向前发展。这就是当前的问题 首先是代码,然后是解释 RaceButtons[RaceCounter] = new JToggleButton(); RaceButtons[RaceCounter].setIc

多亏了这里的优秀员工,我成功地得到了一些半可行的东西,仍然有一些错误,但也许你们可以帮我解决。到目前为止,所提供的解决方案中没有一个是完全匹配的(这就是为什么我没有投票支持他们),但它们确实帮助我以新的方式看待事情,并推动事情向前发展。这就是当前的问题

首先是代码,然后是解释

                RaceButtons[RaceCounter] =  new JToggleButton();
                RaceButtons[RaceCounter].setIcon(RCiconSM);
                RaceButtons[RaceCounter].setBorder(BorderFactory.createEmptyBorder());
                RaceButtons[RaceCounter].setContentAreaFilled(false);
                RaceButtons[RaceCounter].setActionCommand(temp_race.getRaceNameString(RaceCounter));
                RaceButtons[RaceCounter].addActionListener(new ActionListener() {
                            public void actionPerformed(ActionEvent ae) {
                                Race race = new Race(1, 1, GenderList[PHYSICAL_SEX]);
                                race.setRaceID(race.getRaceIDFromString(ae.getActionCommand()));
                                //System.out.println(race.getraceID());
                                        if (RaceButtons[race.getraceID()].isSelected()){
                                            RaceButtons[race.getraceID()].setBorderPainted(true);
                                            RaceButtons[race.getraceID()].setBorder(new LineBorder(Color.blue,2));
                                            MyRaceArray.add(new Race(race.getraceID(), 1, GenderList[PHYSICAL_SEX]));
                                        }else{
                                            RaceButtons[race.getraceID()].setBorderPainted(false);
                                        };
因此,首先我创建了一个切换按钮数组,当你点击它时,它会绘制边界,然后获取它的信息,我可以将它添加到比赛数组中,但这给我带来了另一个问题,我无法完全理解逻辑。但是,如果已经选择了按钮,它会向按钮添加另一个实例,它不应该这样做,它应该忽略IEX现有条目,但这意味着我必须检查arry中是否存在具有相同信息的Race类型的匹配对象,对吗?最好的方法是什么?
当您取消选择它时,我如何删除相同的对象。

您可以使用数组列表使其工作,但从长远来看,这可能不是最好的方法。它可能非常复杂,并且容易出错——当您插入一个新的种族或属性,但忘记在某个地方更改索引时会发生什么

数组和ArrayList通常最好保留在实际有序列/列表(通常具有有意义的序列顺序)的情况下

对你来说,我更倾向于采用一种新的方法。通常,在Java中,您可以使用一个
HashMap
(或包含HashMap的数据结构)来表示每个种族,该映射表示“属性ID”和“默认值”之间的关系

创建一个新的elf只是使用其种族的默认值(或者不同种族的平均值,如果需要…)初始化elf属性的一个例子


有些人可能会建议创建一个包含许多命名字段的OOP类。这也可以工作,但是原型模型更好——从长远来看,它给了你更多的灵活性。您通常希望以某种方式处理大量属性组,如果必须单独引用每个属性字段,那么这样做会非常麻烦。

您可以使用数组列表使其正常工作,但从长远来看,这可能不是最好的方法。它可能非常复杂,并且容易出错——当您插入一个新的种族或属性,但忘记在某个地方更改索引时会发生什么

数组和ArrayList通常最好保留在实际有序列/列表(通常具有有意义的序列顺序)的情况下

对你来说,我更倾向于采用一种新的方法。通常,在Java中,您可以使用一个
HashMap
(或包含HashMap的数据结构)来表示每个种族,该映射表示“属性ID”和“默认值”之间的关系

创建一个新的elf只是使用其种族的默认值(或者不同种族的平均值,如果需要…)初始化elf属性的一个例子


有些人可能会建议创建一个包含许多命名字段的OOP类。这也可以工作,但是原型模型更好——从长远来看,它给了你更多的灵活性。您通常希望以某种方式处理大量属性组,如果您必须单独引用每个属性字段,那么这样做会非常麻烦。

这就是您的代码在种族类中的外观:

import java.util.ArrayList;
import java.util.List;

public class Race {

    private int raceID;

    private double purity;

    private int strMod;

    private int dexMod;

    private int conMod;

    private int wisMod;

    public int getRaceID() {
        return raceID;
    }

    public void setRaceID(int raceID) {
        this.raceID = raceID;
    }

    public double getPurity() {
        return purity;
    }

    public void setPurity(double d) {
        this.purity = d;
    }

    public int getStrMod() {
        return strMod;
    }

    public void setStrMod(int strMod) {
        this.strMod = strMod;
    }

    public int getDexMod() {
        return dexMod;
    }

    public void setDexMod(int dexMod) {
        this.dexMod = dexMod;
    }

    public int getConMod() {
        return conMod;
    }

    public void setConMod(int conMod) {
        this.conMod = conMod;
    }

    public int getWisMod() {
        return wisMod;
    }

    public void setWisMod(int wisMod) {
        this.wisMod = wisMod;
    }

    @Override
    public String toString() {
        return "Race [raceID=" + raceID + ", purity=" + purity + ", strMod="
                + strMod + ", dexMod=" + dexMod + ", conMod=" + conMod
                + ", wisMod=" + wisMod + "]";
    }

    public static void main(String args[]) {

        //create a list of race objects
        List<Race> raceCollection = new ArrayList<Race>();

        //create a race object
        Race race = new Race();
        race.setRaceID(1);
        race.setPurity(0.75);
        race.setStrMod(5);
        race.setDexMod(7);
        race.setConMod(-2);
        race.setWisMod(3);

        //add race object to collection
        raceCollection.add(race);

        //You can create and add multiple objects of race to the collection


        //Iterate your list and print the objects
        for(Race raceObj:raceCollection) {
            System.out.println(raceObj);
        }


    }

}
import java.util.ArrayList;
导入java.util.List;
公共级别比赛{
内总状花序;
私人双纯度;
私人国际标准;
私有int dexMod;
私人int conMod;
私人智能智能手机;
public int getRaceID(){
返回总状花序;
}
公共无效setRaceID(int raceID){
此。外消旋体=外消旋体;
}
公共双精度{
返回纯度;
}
公共空间(双d){
这是纯度=d;
}
public int getStrMod(){
返回strMod;
}
公共无效设置TRMOD(int strMod){
this.strMod=strMod;
}
public int getDexMod(){
返回dexMod;
}
公共无效setDexMod(int-dexMod){
this.dexMod=dexMod;
}
公共int getConMod(){
返回conMod;
}
公共无效setConMod(int-conMod){
this.conMod=conMod;
}
public int getWisMod(){
返回wisMod;
}
公共无效setWisMod(int wisMod){
this.wisMod=wisMod;
}
@凌驾
公共字符串toString(){
return“Race[raceID=“+raceID+”,purchy=“+purchy+”,strMod=”
+strMod+”,dexMod=“+dexMod+”,conMod=“+conMod
+“,wisMod=“+wisMod+”]”;
}
公共静态void main(字符串参数[]){
//创建竞赛对象列表
List raceCollection=新的ArrayList();
//创建竞赛对象
种族=新种族();
小种.刚毛状体(1);
小种。毛纯度(0.75);
种族。设置TRMOD(5);
种族。setDexMod(7);
race.setConMod(-2);
赛特维斯莫德(3);
//将种族对象添加到集合
racecolection.add(race);
//您可以创建多个竞赛对象并将其添加到集合中
//迭代列表并打印对象
用于(赛车OBJ:赛车系列){
系统输出打印LN(raceObj);
}
}
}

这是您的代码在种族等级中的外观:

import java.util.ArrayList;
import java.util.List;

public class Race {

    private int raceID;

    private double purity;

    private int strMod;

    private int dexMod;

    private int conMod;

    private int wisMod;

    public int getRaceID() {
        return raceID;
    }

    public void setRaceID(int raceID) {
        this.raceID = raceID;
    }

    public double getPurity() {
        return purity;
    }

    public void setPurity(double d) {
        this.purity = d;
    }

    public int getStrMod() {
        return strMod;
    }

    public void setStrMod(int strMod) {
        this.strMod = strMod;
    }

    public int getDexMod() {
        return dexMod;
    }

    public void setDexMod(int dexMod) {
        this.dexMod = dexMod;
    }

    public int getConMod() {
        return conMod;
    }

    public void setConMod(int conMod) {
        this.conMod = conMod;
    }

    public int getWisMod() {
        return wisMod;
    }

    public void setWisMod(int wisMod) {
        this.wisMod = wisMod;
    }

    @Override
    public String toString() {
        return "Race [raceID=" + raceID + ", purity=" + purity + ", strMod="
                + strMod + ", dexMod=" + dexMod + ", conMod=" + conMod
                + ", wisMod=" + wisMod + "]";
    }

    public static void main(String args[]) {

        //create a list of race objects
        List<Race> raceCollection = new ArrayList<Race>();

        //create a race object
        Race race = new Race();
        race.setRaceID(1);
        race.setPurity(0.75);
        race.setStrMod(5);
        race.setDexMod(7);
        race.setConMod(-2);
        race.setWisMod(3);

        //add race object to collection
        raceCollection.add(race);

        //You can create and add multiple objects of race to the collection


        //Iterate your list and print the objects
        for(Race raceObj:raceCollection) {
            System.out.println(raceObj);
        }


    }

}
import java.util.ArrayList;
导入java.util.List;
公共级别比赛{
内总状花序;
私人双纯度;
私人国际标准;
私有int dexMod;
私人int conMod;
私人智能智能手机;
public int getRaceID(){
返回总状花序;
}
公共无效setRaceID(int raceID){
此。外消旋体=外消旋体;
}
公共双精度{
返回纯度;
}
公共空间(双d){
class RacePanel implements ActionListener
{
    private Map<Integer,JToggleButton> r;
    private Map<Integer,Race> f;

    public RacePanel()
    {
        r = new TreeMap<Integer,JToggleButton>();
        f = new TreeMap<Integer,Race>();
    }

    public JToggleButton add (Race a)
    {
        JToggleButton button = new JToggleButton();

        button.setIcon(RCiconSM);
        button.setBorder(BorderFactory.createEmptyBorder());
        button.setContentAreaFilled(false);
        button.setActionCommand(a.getRaceID());
        button.addActionListener(this);

        r.put(a.getRaceID, button);
        f.put(a.getRaceID, a);
    }

    public void remove (int raceID)
    {
        r.remove(a.getRaceID);
        f.remove(a.getRaceID);
    }

    // When a button is clicked
    public void actionPerformed(ActionEvent e)
    {
        // related race
        Race a = f.get(e.getActionCommand());

        // clicked button
        JToggleButton b = r.get(e.getActionCommand());

        // ..
    }

    public ArrayList<JToggleButton> getButtonList ()
    {
        return new ArrayList<Value>(r.values());
    }

    public ArrayList<Race> getRaceList ()
    {
        return new ArrayList<Value>(f.values());
    }

    public Race getRace (int raceID)
    {
        return f.get(raceID);
    }

    public JToggleButton getButton (int raceID)
    {
        return r.get(raceID);
    }

    // ..
}