2016-10-04 45 views
1

我創建的對象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); 
+0

您需要從列表中獲取一個對象以調用您的訪問器方法。 'log.get(0).setComment(「blah blah」);'返回列表中的第一個元素(索引'0')並調用'setComment' – Kon

+0

理想情況下最後的代碼是正確的方式 – HARDI

+1

不清楚你想做。什麼是'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

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); 
} 
相關問題