У меня есть список класса A из 1000 элементов, каждый из которых имеет уникальные идентификаторы. Существует другой класс B, который также имеет уникальный параметр id, и этот B является свойством json класса R.
отношение такое:
A: {"id" :id1,
"usedBy": {
"type": "Некоторый ENUM, представляющий класс B",
"id ": "id2",
}
},
Объект B, который используется в объекте A, является независимым и может быть удален извне из какого-либо другого запроса. а также, что делает зависимый объект A устаревшим/недействительным. также в системе может быть много других объектов типа B и не все из них нужно связывать с типом R.
Задача состоит в том, чтобы проверить все такие невалидные объекты типа A, для которых зависимы B больше не существует в системе, и периодически удаляйте недействительные A.
Может ли кто-нибудь подсказать лучший способ решения этой проблемы, спасибо.
Во-первых, я перечислили все элементы класса A в l1, затем перечислили все уникальные идентификаторы класса B, которые используются в классе A в l2.
Теперь есть список l3, в котором собраны все такие недопустимые идентификаторы класса B, которые находятся в l2, но не в ( l1.gentContent().getUsedBy().getId() )
теперь есть список l3 со всеми такими несуществующими идентификаторами типа B, и для всех эти идентификаторы должны удалить зависимый объект класса A. Но в этом подходе используется множество if else и вложенный цикл, что, во-первых, не кажется впечатляющим, а также неприемлемо для проверок качества программного обеспечения, поскольку в методе допускается только 3 if/else/for.
Может ли кто-нибудь подсказать лучший способ решения этой проблемы? Спасибо.
**Это фрагмент, который я пробовал **
публично void validateForAutoCleanUp(контекст OperationContext, страница страницы) {
Список инвалидовToDelete = новый ArrayList();
Список существующих = page.getContent().stream().toList( );
List usedByIds = page.getContent().stream().map(Class A::getUsedBy).map(UsedBy::getId).toList();
List b = service.getAllofTypeB(context, pageNumber, pageSize, null, null).block();
if (b != null) {
List invalidUsedByIds = usedByIds.stream().filter(id -> ! b.stream().map(Class B::getId).toList().contains(id)).toList();
if (!invalidUsedByIds.isEmpty()) {
for (Class A a : existing) {
for (String invalidId : invalidUsedByIds) {
if (a.getUsedBy().getId().equals(invalidId)) {
invalidsToDelete.add(a);
break;
}
}
}
if (!invalidsToDelete.isEmpty())
invalidsToDelete.forEach(i -> service.deleteById(context, i.getId()).block());
} else {
page.getContent().forEach(a -> service.deleteById(context, a.getId()).block());
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ypes-class
Как эффективно проверять общие элементы двух списков разных типов (класса A и класса B) и составлять результирующий спис ⇐ JAVA
Программисты JAVA общаются здесь
1730203085
Anonymous
У меня есть список класса A из 1000 элементов, каждый из которых имеет уникальные идентификаторы. Существует другой класс B, который также имеет уникальный параметр id, и этот B является свойством json класса R.
отношение такое:
A: {[b]"id"[/b] :id1,
[b]"usedBy"[/b]: {
"type": "Некоторый ENUM, представляющий класс B",
"id ": "id2",
}
},
Объект B, который используется в объекте A, является независимым и может быть удален извне из какого-либо другого запроса. а также, что делает зависимый объект A устаревшим/недействительным. также в системе может быть много других объектов типа B и не все из них нужно связывать с типом R.
Задача состоит в том, чтобы проверить все такие невалидные объекты типа A, для которых зависимы B больше не существует в системе, и периодически удаляйте недействительные A.
Может ли кто-нибудь подсказать лучший способ решения этой проблемы, спасибо.
Во-первых, я перечислили все элементы класса A в l1, затем перечислили все уникальные идентификаторы класса B, которые используются в классе A в l2.
Теперь есть список l3, в котором собраны все такие недопустимые идентификаторы класса B, которые находятся в l2, но не в ( l1.gentContent().getUsedBy().getId() )
теперь есть список l3 со всеми такими несуществующими идентификаторами типа B, и для всех эти идентификаторы должны удалить зависимый объект класса A. Но в этом подходе используется множество if else и вложенный цикл, что, во-первых, не кажется впечатляющим, а также неприемлемо для проверок качества программного обеспечения, поскольку в методе допускается только 3 if/else/for.
Может ли кто-нибудь подсказать лучший способ решения этой проблемы? Спасибо.
**Это фрагмент, который я пробовал **
публично void validateForAutoCleanUp(контекст OperationContext, страница страницы) {
Список инвалидовToDelete = новый ArrayList();
Список существующих = page.getContent().stream().toList( );
List usedByIds = page.getContent().stream().map(Class A::getUsedBy).map(UsedBy::getId).toList();
List b = service.getAllofTypeB(context, pageNumber, pageSize, null, null).block();
if (b != null) {
List invalidUsedByIds = usedByIds.stream().filter(id -> ! b.stream().map(Class B::getId).toList().contains(id)).toList();
if (!invalidUsedByIds.isEmpty()) {
for (Class A a : existing) {
for (String invalidId : invalidUsedByIds) {
if (a.getUsedBy().getId().equals(invalidId)) {
invalidsToDelete.add(a);
break;
}
}
}
if (!invalidsToDelete.isEmpty())
invalidsToDelete.forEach(i -> service.deleteById(context, i.getId()).block());
} else {
page.getContent().forEach(a -> service.deleteById(context, a.getId()).block());
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79137103/how-to-efficiently-check-common-elements-of-two-lists-of-different-types-class[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия