@@ -284,45 +284,32 @@ public Flux<KeyValue<K, V>> mget(K... keys) {
284
284
285
285
@ SuppressWarnings ({ "unchecked" , "rawtypes" })
286
286
public Flux <KeyValue <K , V >> mget (Iterable <K > keys ) {
287
-
288
287
List <K > keyList = LettuceLists .newList (keys );
289
288
Map <Integer , List <K >> partitioned = SlotHash .partition (codec , keyList );
290
289
291
290
if (partitioned .size () < 2 ) {
292
291
return super .mget (keyList );
293
292
}
294
293
295
- List <Publisher <KeyValue <K , V >>> publishers = new ArrayList <>();
296
-
297
- for (Map .Entry <Integer , List <K >> entry : partitioned .entrySet ()) {
298
- publishers .add (super .mget (entry .getValue ()));
299
- }
300
-
301
- Flux <KeyValue <K , V >> fluxes = Flux .mergeSequential (publishers );
294
+ List <Publisher <KeyValue <K , V >>> publishers = partitioned .values ().stream ().map (super ::mget )
295
+ .collect (Collectors .toList ());
302
296
303
- Mono <List <KeyValue <K , V >>> map = fluxes .collectList ().map (vs -> {
304
-
305
- KeyValue <K , V >[] values = new KeyValue [vs .size ()];
297
+ return Flux .mergeSequential (publishers ).collectList ().map (results -> {
298
+ KeyValue <K , V >[] values = new KeyValue [keyList .size ()];
306
299
int offset = 0 ;
307
- for (Map .Entry <Integer , List <K >> entry : partitioned .entrySet ()) {
308
300
301
+ for (List <K > partitionKeys : partitioned .values ()) {
309
302
for (int i = 0 ; i < keyList .size (); i ++) {
310
-
311
- int index = entry .getValue ().indexOf (keyList .get (i ));
312
- if (index == -1 ) {
313
- continue ;
303
+ int index = partitionKeys .indexOf (keyList .get (i ));
304
+ if (index != -1 ) {
305
+ values [i ] = results .get (offset + index );
314
306
}
315
-
316
- values [i ] = vs .get (offset + index );
317
307
}
318
-
319
- offset += entry .getValue ().size ();
308
+ offset += partitionKeys .size ();
320
309
}
321
310
322
311
return Arrays .asList (values );
323
- });
324
-
325
- return map .flatMapIterable (keyValues -> keyValues );
312
+ }).flatMapMany (Flux ::fromIterable );
326
313
}
327
314
328
315
@ Override
0 commit comments