J'essaie d'envelopper ma tête autour de l'utilisation de bifonctions dans le processeur d'accumulation de jets de Hazelcast. La première tentative est une comparaison minime simple, mais ce que j'ai trouvé semble si peu élégant. Y a-t-il une meilleure façon de le faire?Comment formuler un sommet élégant pour Hazelcast Jet pour obtenir le minimum?
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));
Fondamentalement, j'ai une classe avec 3 champs: Type, valeur TimeStamp, et je veux obtenir objet avec la valeur la plus faible.
Mon fournisseur est un nouvel objet avec une valeur à max.double, ce qui semble bien. Mon finisseur ne fait que passer l'objet, ce qui est bien aussi.
Mais l'accumulateur semble anormalement compliqué. Y a-t-il un moyen d'éviter d'avoir à lancer x à myObject deux fois? Ou d'une manière encore plus élégante, de garder juste la double valeur, mais toujours retourner l'objet à la fin? SANS avoir à parcourir toute la carte pour obtenir à nouveau l'objet pour la valeur min?
^^ Je rebaptisés myObject à la volée pour ne pas publier des données originales. ;) –