Помогите с преобразованием списков/коллекций Java или что-то в этом роде

У меня есть список объектов, возвращаемых из getJdbcTemplate().query

это выглядит так

object(test,test,test,1)
object(test,test,test,2)
object(test,test,test,3)

Как я могу перенести их в один объект, который выглядит так

object(test,test,test,list<t>({1,2,3}))

Надеюсь, вы уловили идею из моего псевдообъектного представления :)


person Shaun Hare    schedule 08.02.2011    source источник
comment
Это какой-то набор строк или что?   -  person Petriborg    schedule 08.02.2011
comment
да первый это набор строк из db   -  person Shaun Hare    schedule 08.02.2011


Ответы (4)


Я думаю, что использование RowMapper может быть немного болезненным. Возможно, вы можете сделать что-то вроде этого (кстати, это мой псевдо):-

List<Map> rows = getJdbcTemplate().queryForList(sql);

MyObject obj = null;

for (Map row : rows) {
    // configure the first 3 fields upon object creation.
    if (obj == null) {
        obj = new MyObject(row.get("firstField"), row.get("secondField"), row.get("thirdField"));
    }   

    // basically add each item into the list 
    obj.addToList(row.get("fourthField"));
}
person limc    schedule 08.02.2011

JdbcTemplate имеет дело со строками, поэтому вам нужен RowMapper для извлечения значений и преобразования их в список пользовательского типа (реализуйте класс, соответствующий этой структуре object(test,test,test,1)). Затем вы можете работать с извлеченными значениями и собирать новый объект из значений списка.

Ссылка:

person Sean Patrick Floyd    schedule 08.02.2011

Не могли бы вы использовать двумерный массив?

http://www.willamette.edu/~gorr/classes/cs231/lectures/chapter9/arrays2d.htm

Я нуб в java, поэтому, если я не прав, извините за мое невежество.

person VoronoiPotato    schedule 08.02.2011

Расширьте свою объектную модель.

Вам нужно создать новый объект, аналогичный тому, который вы создаете с аргументом отдельного значения, который вместо этого принимает список или коллекцию в качестве последнего аргумента. Вместо того, чтобы хранить там одно значение, ваш объект будет хранить там список или коллекцию. Если этот список или коллекция будут неизменяемыми после создания объекта, вам следует подумать о преобразовании данных в int[] перед их сохранением.

Затем создайте любые методы, которые вам нужны для этого нового объекта. Вы даже можете написать метод для возврата массива старых объектов, где каждый объект имеет только одно значение.

person Erick Robertson    schedule 08.02.2011