Оптимизация нескольких потоков и сопоставлений в одном цикле.
Я пытаюсь найти лучший способ оптимизировать конвертеры ниже, чтобы следовать потоку, который я называю "convertAndGroupForUpdate", который сначала запускает преобразования и соответствующие сопоставления.
Любая помощь в оптимизации этого кода будет очень признательна.
public List<GroupedOrderActionUpdateEntity> convertAndGroupForUpdate(List<SimpleRatifiableAction> actions) { List<GroupedOrderActionUpdateEntity> groupedActions = new ArrayList<>(); Map<String, List<SimpleRatifiableAction>> groupSimple = actions.stream() .collect(Collectors.groupingBy(x -> x.getOrderNumber() + x.getActionType())); groupSimple.entrySet().stream() .map(x -> convertToUpdateGroup(x.getValue())) .forEachOrdered(groupedActions::add); return groupedActions; } public GroupedOrderActionUpdateEntity convertToUpdateGroup(List<SimpleRatifiableAction> actions) { List<OrderActionUpdateEntity> actionList = actions.stream().map(x -> convertToUpdateEntity(x)).collect(Collectors.toList()); return new GroupedOrderActionUpdateEntity( actions.get(0).getOrderNumber(), OrderActionType.valueOf(actions.get(0).getActionType()), actions.get(0).getSource(), 12345, actions.stream().map(SimpleRatifiableAction::getNote) .collect(Collectors.joining(", ", "Group Order Note: ", ".")), actionList); } public OrderActionUpdateEntity convertToUpdateEntity(SimpleRatifiableAction action) { return new OrderActionUpdateEntity(action.getId(), OrderActionState.valueOf(action.getState())); }
Что я уже пробовал:
Я разделил функциональность на несколько потоков, но теперь я не уверен, что лучший подход для дальнейшей оптимизации этого процесса.