diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-05-15 17:03:37 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-05-18 09:38:46 +0200 |
commit | 129aba3a591be60a5194aae79e3f6c1765efc222 (patch) | |
tree | 2d9a7ac1794aee2e977a7d337214ce74ce046ee1 /vespajlib | |
parent | ca294b0a05520dff341016d2fc75056ac75b0d8e (diff) |
Shuffle upgrades
* Avoids instances always upgrading in the same order
* Prevents clumping together upgrades of instances under the same tenant
Diffstat (limited to 'vespajlib')
-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); + } + } |