Создание динамического потока из двух или более похожих Java-потоков.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Создание динамического потока из двух или более похожих Java-потоков.

Сообщение Anonymous »

Я написал следующий код, используя потоки Java.

Код: Выделить всё

@Data
public class Car {

private Long carId;
private Long carNumber;
private Long carColorId;
private String engineNumber;
private String partsNumber;
private String modifiedBy;
}

Код: Выделить всё

List carList = List.of(
new Car(1L, 100L, 1000L, "1ACB", "ZEGV200", "John"),
new Car(2L, 100L, 1000L, "1TUV", "ZVAV200", "Doe"),
new Car(3L, 200L, 2000L, "1ZVC", "CADV200", "Jane"),
new Car(4L, 200L, 2000L, "8CEB", "V2IWD00", "Harry")
);
carList.stream()
.filter(x -> !ObjectUtils.isEmpty(x.getCarNumber()))
.collect(Collectors.toMap(
Car::getCarNumber,
Function.identity(),
(x1, x2) -> new Car(x1.getCarNumber(), x1.getEngineNumber().concat(x2.getEngineNumber()))
));

carList.stream()
.filter(x -> !ObjectUtils.isEmpty(x.getCarColorId()))
.collect(Collectors.toMap(
Car::getCarColorId,
Function.identity(),
(x1, x2) -> new Car(x1.getCarColorId(), x1.getEngineNumber().concat(x2.getEngineNumber()))
));
Вышеуказанные потоки практически одинаковы, за исключением ключа в карте и условия фильтра. Я хотел бы знать, могу ли я создать один поток, который может вместить как потоки, перечисленные выше, так и потоки, вызываемые на основе входных условий.
Например: если я передаю строку colorId, то поток с условием colorId будет вызван в динамическом потоке.

Подробнее здесь: https://stackoverflow.com/questions/759 ... va-streams
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»