Per un elenco che hanno 3 elementi [A, B, C]:
È possibile accedere a circolare tutte le volte che vuoi. E c'è una funzione di conteggio aggiuntiva che registra il conteggio degli accessi di ciascun elemento.
Ad esempio, se accedervi 7 volte, deve restituire:
[A, B, C, A, B, C, A]
E hanno accesso conteggio di ciascun elemento come segue:
+–––––––––––+–––––––––––––––+ | Element | Access count | +–––––––––––––––––––––––––––+ | A | 3 | +–––––––––––––––––––––––––––+ | B | 2 | +–––––––––––––––––––––––––––+ | C | 2 | +–––––––––––+–––––––––––––––+
Qualsiasi risposta sarebbe molto apprezzato.
Saluti.
Aggiornato
Aggiungere un'altra funzione aggiuntiva che permette chiamante di specificare un elenco di elementi che dovrebbero essere filtrati. usano ancora 7 volte accedendo come esempio, filtrando [C]:
[A, B, A, B, A, B, A]
+–––––––––––+–––––––––––––––+ | Element | Access count | +–––––––––––––––––––––––––––+ | A | 4 | +–––––––––––––––––––––––––––+ | B | 3 | +–––––––––––––––––––––––––––+ | C | 0 | +–––––––––––+–––––––––––––––+
E, la successiva chiamata su getNextOne() deve sempre prendere quello che l'accesso conteggio è bassa (simulare un load implementazione di conteggio di accesso bilanciata.). Quindi, se secondo tentativo chiamante per l'accesso a 10 volte, deve restituire:
[C, C, C, B, C, A, B, C, A, B, C, A]
+–––––––––––+–––––––––––––––+ | Element | Access count | +–––––––––––––––––––––––––––+ | A | 7 | +–––––––––––––––––––––––––––+ | B | 6 | +–––––––––––––––––––––––––––+ | C | 6 | +–––––––––––+–––––––––––––––+
Questa implementazione è così elegante. Grazie mille per la tua pronta risposta! – Wuaner
Ho aggiornato la mia domanda. – Wuaner
@Wuaner si prega di creare una nuova domanda, non aggiornare più di 1 anno dopo, grazie. –