Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

ConstraintStreams: accumulate or outer right join

Aperta
#1,399 7 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
java

Direzione di ricerca

Start with the UniConstraintStream, BiConstraintStream, TriConstraintStream, and QuadConstraintStream join and ifNotExists entry points, using the helper pattern shown in the issue as the reference. Add tests for the proposed outer-right-join behavior across all four stream types, and confirm that the naming and behavior are consistent before considering the work done.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

process/needs triage

This pattern is common:

   f.forEach(MyEntity)
    .groupBy(MyEntity::myGrouping, count())
    .join(MinMaxRule, ... same myGrouping ...)

It's also buggy. If nothing is assigned to the grouping, the MinMaxRule isn't checked.

This is because join() is an inner join in SQL talk. We need an outer right join instead.
Some models have helper code for that:

    @SafeVarargs
    private <A, B> BiConstraintStream<A, B> joinOuterRight(UniConstraintStream<A> sourceStream,
            Class<B> joinedClass, BiJoiner<A, B>... joiners) {
        return sourceStream.join(joinedClass, joiners)
                .concat(sourceStream.ifNotExists(joinedClass, joiners));
    }

Let's standardize it.

Proposal A)

Add syntactic sugar + tests for Uni/Bi/Tri/QuadConstraintStream.joinOuterRight(...), as shown above.
Later implementations can potentially optimize the implementation, but for now the facade is enough.

Naming to be discussed.
Later we might want to implement a left outer join (.joinOuterLeft()) and a full outer join (.joinOuterFull()) too.

Lingua principale
Java
Stelle
1.8k
Fork
238
Merge medio
3g 1h
PR unite (30g)
55

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di TimefoldAI/timefold-solver

Tutte le issue di TimefoldAI/timefold-solver

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.