Вы спросили: «Я хочу знать, есть ли лучший способ сделать это». Существует лучший способ.
IMHO, вы должны подумать о создании класса с именем Record, который содержит данные (имя, фамилия, задание и идентификатор) и создать ArrayList. Затем вместо использования указателей (и потенциально захватить неправильный элемент данных) вы можете использовать методы Get get, чтобы получить необходимый элемент данных (и, возможно, сохранить его в другом списке).
Шаг 1: Создать Record
класс:
public class Record
{
private String firstName;
private String lastName;
private String job;
private String id;
// TODO add constructor(s), getters and setters
}
Шаг 2:. Создать список Records
(это лучший вариант, что создать список, имеющий информацию в разных местах, индекс, который путь, каждый набор имен, фамилии, задания и идентификатора будет самодостаточным, который лучше, чем непересекающийся в разных местах индекса в списке.
ArrayList<Record> records = new ArrayList<Record>();
Шаг 3: Вместо того, чтобы использовать расположение индексов (и, возможно, захватить неправильный элемент данных), вы можете использовать методы Get get, чтобы получить необходимый элемент данных (и, возможно, сохранить его в другом списке).
ArrayList<String> names = new ArrayList<String>();
ArrayList<String> jobs = new ArrayList<String>();
...
names.add(records.getLastName() + ", " + records.getFirstName());
jobs.add(records.getJob());
С другой стороны, и, возможно, лучшим решением, вы можете использовать Map
для хранения этой информации. Например, идентификатор задания может быть ключом на Карте, который возвращает описание задания и кто был назначен для его выполнения. Идентификаторы заданий должны быть уникальными. Добавление идентификаторов в список может быть дублировано, поскольку интерфейс List
не ограничивает ввод повторяющихся данных. Если вы используете карту, они гарантируют уникальность ключей.Значение, возвращаемое с Map
, может быть объектом Record
(или другим видом), который содержит имя человека и задание, за которое оно несет ответственность. Поскольку значения могут быть дублирующими, у вас может быть человек, выполняющий несколько заданий, что, вероятно, вы хотите сделать. Чтобы использовать Map
:
Map<String, Record> jobs = new HashMap<String, Record>(); //This record class doesn't have ID in it.
jobs.put("ABC123", new Record("John", "Doe", "Fix Drywall");
jobs.put("321CBA", new Record("Bill", "Smith", "Install Light Fixtures");
несколько вещей, чтобы рассмотреть при использовании Map
. Если вы попытаетесь создать новую запись с существующим ключом, старый будет перезаписан.
jobs.put("ABC123", new Record("John", "Doe", "Fix Drywall");
jobs.put("ABC123", new Record("Bill", "Smith", "Install Light Fixtures"); //Overwrote the previous entry because key is the same
Если вы хотите изменить ключ для существующего значения, вы должны получить значение, магазин временно удалить старую запись, и сделать новую запись со старым значением TEMP:
jobs.put("ABC123", new Record("John", "Doe", "Fix Drywall");
Record rec = jobs.remove("ABC123"); // gets the record and removes old entry
jobs.put("321CBA", rec); // new job ID for old record
Надеюсь, это поможет.
Это должно быть 'names.add (details.get (i));' – Braj
Вы выходите из пределов. – Maroun
Почему вы не используете объект 'Person', с свойствами' name', 'lastname',' job' и 'id'? –