Я пытаюсь понять использование бифункции в процессоре накопления Hazelcast Jets. Первая попытка - это простое минимальное сравнение, но то, что я придумал, выглядит таким неэлегантным. Есть ли лучший способ сделать это?
Vertex min = dag.newVertex("min", accumulate(()
-> new myObject(Type.SOME_ENUM,Double.MAX_VALUE,0L),
(cMin, x) -> (((myObject) x).getValue() < cMin.Value()) ? (myObject) x) : cMin,
(cMin) -> cMin));
В основном у меня есть класс с 3 полями: Type, Value, TimeStamp, и я хочу получить объект с наименьшим значением.
Мой поставщик — это новый объект со значением max.double, который выглядит нормально. Мой финишер просто передает объект, что тоже нормально.
Но аккумулятор выглядит излишне сложным. Есть ли способ избежать необходимости дважды приводить x к myObject? Или какой-то еще более элегантный способ просто сохранить двойное значение, но все же вернуть объект в конце? БЕЗ необходимости перебирать всю карту, чтобы снова получить объект для минимального значения?