diff options
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java b/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java index 176e5044bc2..de1040852f5 100644 --- a/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java +++ b/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java @@ -1,12 +1,15 @@ // Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.collections; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Optional; +import java.util.Random; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Predicate; @@ -88,4 +91,11 @@ public abstract class AbstractFilteringList<Type, ListType extends AbstractFilte return items.iterator(); } + /** Returns the items in this shuffled using random as source of randomness */ + public final ListType shuffle(Random random) { + ArrayList<Type> shuffled = new ArrayList<>(items); + Collections.shuffle(shuffled, random); + return constructor.apply(shuffled, false); + } + } |