2014-01-18 6 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)); 
} 

Это программа я опробовал. Но я хочу использовать тот же список как для строки, так и для timestamp.
Возможно ли это или нет? Если да, то как ???

+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().

Лучше было бы создать отдельный метод преобразования объекта в String и Timestamp. Объект является родительским классом для всех классов в Java и, следовательно, может содержать любой тип объекта. Вы можете проверить тип объекта в этом методе и, следовательно, соответственно создать объекты String и Date.

Вы можете использовать следующий код для заливки объекта элемент Timestamp -

Дата = новый SimpleDateFormat ("MMMM г, гггг", Locale.ENGLISH) .parse (строка);

+0

спасибо за ответ. Мой вопрос касается двух списков, которые используются в моей программе. Я хочу заменить это на один. но как? – Mubii

Смежные вопросы