2014-01-18 166 views
0

計劃::如何將ArrayList <Object>轉換爲ArrayList <String>或ArrayList <Timestamp>?

ArrayList<Object> DataList = new ArrayList<Object>(); 
ArrayList<BigDecimal> valueList = new ArrayList<BigDecimal>(); 

ArrayList<String> stringList = new ArrayList<String>(); 
ArrayList<Timestamp> dateList = new ArrayList<Timestamp>(); 

List<ArrayList<Object>> listDatas = getDetailsfromDB(); 
// Here we get list like 
// [[12,apple],[25, grape],[1,orange]] or 
// [[12,12/12/2013],[25, 11/11/2013],[1,10/10/2013]] 

for(int i = 0; i < listDatas.size(); i++) 
{ 
List<Object> temp = listDatas.get(i); 
     valueList.((BigDecimal) temp.get(0)); 
    if(temp.get(1) instanceof String) 
      stringList.add((String)temp.get(1)); 
    else if(temp.get(1) instanceof Timestamp) 
      dateList.add((Timestamp)temp.get(1)); 
} 

這節目我嘗試了。 但我想爲字符串和時間戳使用相同的列表。
這可能嗎?如果是的話?

+0

如果你有一個從'getDetailsFromDB()'返回的兩個對象模式,爲什麼不直接使用'Map '而不是'List >'? – Durandal

+0

你可以這樣做 - 列表 listDatas = getDetailsfromDB();沒有必要提及ArrayList, –

+0

但是BigDecimal值不是唯一的。 – Mubii

回答

0

最簡單的方法是循環它並將每個項目轉換爲一個新的字符串列表。

ArrayList<Object> list = new ArrayList<Object>(); 
    list.add(1); 
    list.add("Java"); 
    list.add(3.14); 

    List<String> strings = new ArrayList<String>(); 
    for (Object object : list) { 
     strings.add(object != null ? object.toString() : null); 
    } 
+0

那麼時間戳? – Mubii

+0

我在上面,我會在完成後發佈它。直到然後檢查字符串。並張貼我回來,這是否工作? –

+0

感謝此工作正常。但我想用一個列表而不是兩個列表(即一個用於字符串,另一個用於時間戳)。 – Mubii

0

您必須在列表中的所有元素進行迭代,然後將有單獨的元素轉換爲字符串。您可以使用Object toString()方法來達到此目的。

更好的辦法是創建一個單獨的方法將對象轉換爲字符串和時間戳。 Object是Java中所有類的父類,因此可以容納任何對象類型。您可以檢查該方法中的對象類型,因此可以相應地創建String和Date對象。

可以使用下面的代碼用於鑄造對象元件時間戳 -

日期日期=新的SimpleDateFormat( 「MMMM d,YYYY」,Locale.ENGLISH).parse(字符串);

+0

感謝您的回答。我的問題與我的程序中使用的兩個列表有關。我想用一個替換它。但是如何? – Mubii

相關問題