объединять поля из массива объектов Java - PullRequest
1 голос
/ 19 января 2012

Я новичок в Java.У меня есть массив объектов, которые имеют строковое поле.Я могу объединить все строки в строковый массив с помощью цикла, но это очень не элегантно.

int numObj = obj.length;
String[] strArray = new String[numObj];
for (int i = 0; i < numObj; i++) {
    strArray[i] = obj[i].strField;
}

Есть ли способ объединить это единственное поле из всех объектов в строковый массив в одной команде?Например:

String[] strArray = (String[]){obj[].strField};

Это не работает, потому что obj[] является массивом и поэтому не имеет никаких полей, но использование {obj.strField} также не работает, потому что нет объекта с именемobj.Кстати, мне действительно не нужно переделывать поле или делать .toString(), потому что это уже строка.

Я просмотрел многие, многие другие посты (но, возможно, недостаточно?), Связанные с этим, ноЯ до сих пор не мог понять это.Есть некоторые, которые ссылаются на преобразование массива объектов в строковый массив, но я не думаю, что эти сообщения означают преобразование определенного поля в объектах, но самого объекта, в тип uncast.

В MATLABэто было бы тривиально: strCellArray = {obj.strField}; немедленно создаст массив ячеек из всех полей strFields в obj.

Спасибо за вашу помощь.

1 Ответ

7 голосов
/ 19 января 2012

То, что вы сделали, это единственный способ. Однако вам не нужно создавать переменную для длины массива. А использование открытых полей в 99,99% случаев является очень плохой идеей:

String[] strings = new String[objects.length];
for (int i = 0; i < objects.length; i++) {
    strings[i] = objects[i].getStringField();
}
...