繁体   English   中英

如何在Java中编辑类类型数组中的元素?

[英]How to edit elements in array of class type in java?

如何编辑类类型数组中的单个元素。 例如,如何为元素1分配名称和描述?

Object [] myArray = new Object7; 对象myObject = myArray [5]; //在索引5处获取对象,然后对您的对象进行更改

创建数组:

type[] arrayName = new type[size];

例:

int[] someNumbers = new int[10]; // array with 10 slots

要获取元素,只需使用arrayName[index] 数组是从0-based ,因此第5个元素的获取是由someNumbers[4]

假设我们有一个“人员”数组,您想更改一个人员地址。

Person personObj = arrayOfPersons[3]; // get the 4th person
personObj.setAddress("New York");

而已! 你完成了!

附加说明:如果尝试访问数组外部的元素(使用负索引或大于或等于数组长度的索引),则将获得ArrayIndexOutOfBoundsException

您是否要向此类添加其他属性?

我想你有一个数组

String[] data = new String[]{"a", "b", "c"}

要添加其他属性,可以尝试创建包装器:

class Wrapper<T> {

    private T origin

    public String name;
    public String desc

    public Wrapper(T data) {
        origin = data;
    }
}

要添加其他属性:

Map<String, Wrapper> extraProperties = new HashMap<String, Wrapper>();

Wrapper<String> w = new Wrapper<String>(data[1]);
w.name = "a name";
w.desc = "description"

extraProperties.put(data[1], w);

要访问其他属性:

if(extraProperties.contains(data[1])) {
    extraProperties.get(data[1]).name
    extraProperties.get(data[1]).desc
}

如何为元素1分配名称和描述?

这取决于您的班级,但这是一个(不好的)例子:

YourClass[] array = .... ;           // wherever it comes from
array[1].name = "World";             // if name is a member of your class
array[1].setDescription("whatever"); // if there is a setter for description

请注意,元素1是数组的第二个元素,因为indes以0开头。

例如,这里的objectCar类型的class 并且您的Car object具有一个名为setNumberPlate(String x)的方法,该方法类似于:

void setNumberPlate (String str)
{
   //numberPlate is a String data member of your Car class
   numberPlate = str;
}

你需要有一个方法的原因是因为它是一个很好的做法,让您的数据成员class private 例如,这是类:

Class Car
{
   private String numberPlate;

   public void setNumberPlate(String str)
   {
      numberPlate = str;
   }

}

然后,您可以在另一个类中访问此方法。 如果将对象存储在array ,那么这就是您要做的。

Car[] arr = new Car[10];

arr[0].setNumberPlate("UIA9490");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM