Управление объектом списка Java и итерация их - PullRequest
0 голосов
/ 28 марта 2019

У меня есть список, который является объектом Java, как показано ниже.

public class TaxIdentifier {
public String id;
public String gender;
public String childId; 
public String grade,
public String isProcessed;
////...///

getters and setters

///....///
}

Records in DB looks like below,
id   gender childId grader isProcessed
11      M     111       3       Y
12      M     121       4       Y
11      M     131       2       Y
13      M     141       5       Y
14      M     151       1       Y
15      M     161       6       Y   


List<TaxIdentifier> taxIdentifierList = new ArrayList<TaxIdentifier>();

for (TaxIdentifier taxIdentifier : taxIdentifierList) {             


}

пока я выполняю цикл и получаю id = 11, я должен проверить, есть ли другие записи с id = 11 иобработайте их вместе и выполните операцию с БД, а затем возьмите следующую запись, скажем, в этом случае 12 и посмотрите, есть ли другие записи с id = 12 и т. д.

Один из вариантов - получить идентификатор и запроситьБД вернуть все id = 11 и тд.Но это слишком много назад и вперед с БД.

Какой лучший способ сделать то же самое в Java?Пожалуйста, совет.

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Если вам все равно нужно обработать все записи в соответствующей таблице базы данных - вы должны получить их все за 1 прием в оба конца.

После этого вы можете собрать все свои TaxIdentifier записи в структуре данных словаря и обработать их любым удобным для вас способом.

Краткий пример может выглядеть так:

Map<String, List<TaxIdentifier>> result = repositoty.findAll().stream().collect(Collectors.groupingBy(TaxIdentifier::getId));

Здесь все записи TaxIdentifier, сгруппированные по идентификатору TaxIdentifier (все записи с идентификатором, равным «11»), могут быть получены и обработаны следующим образом:

List<TaxIdentifier> taxIdentifiersWithId11 = result.get("11");
0 голосов
/ 28 марта 2019

Я бы использовал всю мощь вашей базы данных.Когда вы запрашиваете, вы должны упорядочить запрос по идентификатору в порядке возрастания.Не уверен, какую базу данных вы используете, но я бы сделал:

SELECT * FROM MY_DATABASE WHERE IS_PROCESSED = 'N' ORDER BY ID ASC; 

Это берет на себя нагрузку по сортировке ее из вашего приложения и в вашу базу данных.Затем ваш запрос возвращает необработанные записи с самым низким идентификатором сверху.Тогда просто последовательно прорабатывайте их по порядку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...