#java #list #object #arraylist
#java #Список #объект #arraylist
Вопрос:
Я создал объект N, который имеет некоторые атрибуты, например:
public class LogEvidence {
private String comment;
private String url;
private String time;
public LogEvidence(String comentario, String url, String tiempo) {
super();
this.comment = comentario;
this.url = url;
this.time = tiempo;
}
public String getComentario() {
return comment;
}
public void setComentario(String comentario) {
this.comment = comentario;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTiempo() {
return time;
}
public void setTiempo(String tiempo) {
this.time = tiempo;
}
@Override
public String toString() {
return "LogEvidence [comentario=" comment ", url=" url ", tiempo=" time "]";
}
}
Теперь я хочу сделать что-то вроде этого:
ArrayList<LogEvidence>log = new ArrayList<LogEvidence>();
Я хочу просмотреть список и добавить все атрибуты к моему объекту, я имею в виду что-то вроде этого:
log.setComment("comment one");
log.setUrl("http://google.com");
log.setTime("04:20");
Может быть, это невозможно, и я должен сделать что-то вроде следующего?
List list= new List();
LogEvidence object1= new LogEvidence ();
object1.setComment("comment");
object1.setUrl("http://url.com");
object1.setTime(20);
lista.add(object1);
Комментарии:
1. Вам нужно получить объект из списка, чтобы вызвать для него ваши методы доступа.
log.get(0).setComment("blah blah");
возвращает первый элемент (индекс0
) из вашего списка и вызываетsetComment
2. В идеале последний код является правильным способом
3. Неясно, что вы хотите сделать. Что
log.setComment(...)
нужно делать?
Ответ №1:
Вот как вы можете это сделать:
Создайте объект из LogEvidence
.
LogEvidence logEvidence = new LogEvidence();
logEvidence.setComentario("comment one");
logEvidence.setUrl("http://google.com");
logEvidence.setTiempo("04:20");
и добавьте его в список массивов.
log.add(logEvidence);
Таким образом, вы можете создавать больше объектов и продолжать добавлять список. Поскольку ваш список называется как log
, поэтому вы добавите в log
Объясняя это немного подробнее, это должно быть что-то вроде этого:
List<LogEvidence> logEvidenceList = new ArrayList<>();
LogEvidence logEvidence1 = new LogEvidence();
logEvidence1.setComentario("comment one");
logEvidence1.setUrl("http://google.com");
logEvidence1.setTiempo("04:20");
logEvidenceList.add(logEvidence1);
LogEvidence logEvidence2 = new LogEvidence();
logEvidence2.setComentario("comment one");
logEvidence2.setUrl("http://google.com");
logEvidence2.setTiempo("04:20");
logEvidenceList.add(logEvidence2);
....
....
....
Или через вызов конструктора, это станет более кратким и читаемым.
List<LogEvidence> logEvidenceList = new ArrayList<>();
LogEvidence logEvidence1 = new LogEvidence("comment one","http://google.com","04:20");
logEvidenceList.add(logEvidence1);
LogEvidence logEvidence2 = new LogEvidence("comment one","http://google.com","04:20");
logEvidenceList.add(logEvidence2);
....
....
....
Теперь, когда вы хотите извлечь объекты из списка, вы можете просмотреть список и получить один за другим, например;
for (LogEvidence evidence : logEvidenceList) {
System.out.println(evidence);
}
Для получения дополнительной информации о ArrayList
Ответ №2:
Как прокомментировал Кон, вы пытаетесь воздействовать на объект, который будет находиться в списке, а не на сам список.
Есть несколько способов сделать это, но поскольку у вас есть параметризованный конструктор, самым простым будет следующий:
ArrayList<LogEvidence> log = new ArrayList<LogEvidence>();
log.add(new LogEvidence("comment one", "http://url.com", "04:20");
Что делается:
Мы создаем список с new ArrayList<LogEvidence>()
помощью и присваиваем его переменной с именем log
.
Затем мы создаем новый LogEvidence
объект, уже назначая ему данные через параметры его конструктора, с new LogEvidence("comment one","http://url.com","04:20")
помощью .
Поскольку он будет храниться в списке, мы можем использовать его анонимно. Мы добавляем его в список напрямую, используя метод списка .add(E e)
, а не присваиваем его переменной.
В этом случае вам не нужно определять или назначать ненужные переменные.
И если вам нужно получить доступ к какому-либо конкретному LogEvidence
из списка, вы можете использовать .get(int index)
метод. В этом случае log.get(0)
, для возврата первого элемента, будет возвращен объект, который вы только что вставили в приведенный выше пример кода.
Вы также можете использовать a FOR-EACH LOOP
для итеративного воздействия на все объекты в списке. Вот пример, который печатает список:
for (LogEvidence evidence : log) {
System.out.println(evidence);
}