如何创建对象列表和访问其属性

时间:2016-10-04 21:50:38

标签: java list object 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);

2 个答案:

答案 0 :(得分: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

的详细信息

答案 1 :(得分:0)

正如Kon评论的那样,您正在尝试对列表中的对象进行操作,而不是列表本身。

有几种方法可以做到这一点,但由于你有一个参数化的construtor,最简单的是:

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)将返回刚刚插入上面示例代码中的对象。

您还可以使用FOR-EACH LOOP以迭代方式处理列表中的所有对象。以下是打印列表的示例:

for (LogEvidence evidence : log) {
    System.out.println(evidence);
}