summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/funcutils/ListUtils.java
diff options
context:
space:
mode:
authorbjculkin <bjculkin@mix.wvu.edu>2018-02-12 22:45:04 -0500
committerbjculkin <bjculkin@mix.wvu.edu>2018-02-12 22:45:04 -0500
commitdf94066e3af02ff02d5ab4d033a3d603f743234c (patch)
tree168a1edaf58d386c175ffb601e9d4da8e13d31e2 /base/src/main/java/bjc/utils/funcutils/ListUtils.java
parentae51c587c53f7ca311e556e3cbd0c5566d6c2843 (diff)
Formatting pass
Diffstat (limited to 'base/src/main/java/bjc/utils/funcutils/ListUtils.java')
-rw-r--r--base/src/main/java/bjc/utils/funcutils/ListUtils.java126
1 files changed, 60 insertions, 66 deletions
diff --git a/base/src/main/java/bjc/utils/funcutils/ListUtils.java b/base/src/main/java/bjc/utils/funcutils/ListUtils.java
index 2441a80..20ae7b2 100644
--- a/base/src/main/java/bjc/utils/funcutils/ListUtils.java
+++ b/base/src/main/java/bjc/utils/funcutils/ListUtils.java
@@ -23,13 +23,12 @@ public class ListUtils {
* spaces.
*
* @param input
- * The list of tokens to collapse.
+ * The list of tokens to collapse.
*
- * @return
- * The collapsed string of tokens.
+ * @return The collapsed string of tokens.
*/
public static String collapseTokens(final IList<String> input) {
- if (input == null) throw new NullPointerException("Input must not be null");
+ if(input == null) throw new NullPointerException("Input must not be null");
return collapseTokens(input, "");
}
@@ -39,33 +38,32 @@ public class ListUtils {
* separator after each token.
*
* @param input
- * The list of tokens to collapse.
+ * The list of tokens to collapse.
*
* @param seperator
- * The separator to use for separating tokens.
+ * The separator to use for separating tokens.
*
- * @return
- * The collapsed string of tokens.
+ * @return The collapsed string of tokens.
*/
public static String collapseTokens(final IList<String> input, final String seperator) {
- if (input == null) {
+ if(input == null) {
throw new NullPointerException("Input must not be null");
- } else if (seperator == null) {
+ } else if(seperator == null) {
throw new NullPointerException("Seperator must not be null");
}
- if (input.getSize() < 1) {
+ if(input.getSize() < 1) {
return "";
- } else if (input.getSize() == 1) {
+ } else if(input.getSize() == 1) {
return input.first();
} else {
final StringBuilder state = new StringBuilder();
int i = 1;
- for (final String itm : input.toIterable()) {
+ for(final String itm : input.toIterable()) {
state.append(itm);
- if (i != input.getSize()) {
+ if(i != input.getSize()) {
state.append(seperator);
}
@@ -80,21 +78,20 @@ public class ListUtils {
* Select a number of random items from the list without replacement.
*
* @param <E>
- * The type of items to select.
+ * The type of items to select.
*
* @param list
- * The list to select from.
+ * The list to select from.
*
* @param number
- * The number of items to selet.
+ * The number of items to selet.
*
* @param rng
- * A function that creates a random number from 0 to the
- * desired number.
+ * A function that creates a random number from 0 to the desired
+ * number.
*
- * @return
- * A new list containing the desired number of items randomly
- * selected from the specified list without replacement.
+ * @return A new list containing the desired number of items randomly
+ * selected from the specified list without replacement.
*/
public static <E> IList<E> drawWithoutReplacement(final IList<E> list, final int number,
final Function<Integer, Integer> rng) {
@@ -105,7 +102,7 @@ public class ListUtils {
final Iterator<E> itr = list.toIterable().iterator();
E element = null;
- for (final int index = 0; itr.hasNext(); element = itr.next()) {
+ for(final int index = 0; itr.hasNext(); element = itr.next()) {
/* n - m */
final int winningChance = number - selected.getSize();
@@ -113,7 +110,7 @@ public class ListUtils {
final int totalChance = total - (index - 1);
/* Probability of selecting the t+1'th element */
- if (NumberUtils.isProbable(winningChance, totalChance, rng)) {
+ if(NumberUtils.isProbable(winningChance, totalChance, rng)) {
selected.add(element);
}
}
@@ -125,27 +122,26 @@ public class ListUtils {
* Select a number of random items from the list, with replacement.
*
* @param <E>
- * The type of items to select.
+ * The type of items to select.
*
* @param list
- * The list to select from.
+ * The list to select from.
*
* @param number
- * The number of items to select.
+ * The number of items to select.
*
* @param rng
- * A function that creates a random number from 0 to the
- * desired number.
+ * A function that creates a random number from 0 to the desired
+ * number.
*
- * @return
- * A new list containing the desired number of items randomly
- * selected from the specified list.
+ * @return A new list containing the desired number of items randomly
+ * selected from the specified list.
*/
public static <E> IList<E> drawWithReplacement(final IList<E> list, final int number,
final Function<Integer, Integer> rng) {
final IList<E> selected = new FunctionalList<>(new ArrayList<>(number));
- for (int i = 0; i < number; i++) {
+ for(int i = 0; i < number; i++) {
selected.add(list.randItem(rng));
}
@@ -157,27 +153,26 @@ public class ListUtils {
* for more than one element in a partition.
*
* @param <E>
- * The type of elements in the list to partition.
+ * The type of elements in the list to partition.
*
* @param input
- * The list to partition.
+ * The list to partition.
*
* @param counter
- * The function to determine the count for each element for.
+ * The function to determine the count for each element for.
*
* @param partitionSize
- * The number of elements to put in each partition.
+ * The number of elements to put in each partition.
*
- * @return
- * A list partitioned according to the above rules.
+ * @return A list partitioned according to the above rules.
*/
public static <E> IList<IList<E>> groupPartition(final IList<E> input, final Function<E, Integer> counter,
final int partitionSize) {
- if (input == null) {
+ if(input == null) {
throw new NullPointerException("Input list must not be null");
- } else if (counter == null) {
+ } else if(counter == null) {
throw new NullPointerException("Counter must not be null");
- } else if (partitionSize < 1 || partitionSize > input.getSize()) {
+ } else if(partitionSize < 1 || partitionSize > input.getSize()) {
final String fmt = "%d is not a valid partition size. Must be between 1 and %d";
final String msg = String.format(fmt, partitionSize, input.getSize());
@@ -193,20 +188,20 @@ public class ListUtils {
final GroupPartIteration<E> it = new GroupPartIteration<>(returned, rejected, partitionSize, counter);
/* Run up to a certain number of passes. */
- for (int numberOfIterations = 0; numberOfIterations < MAX_NTRIESPART
+ for(int numberOfIterations = 0; numberOfIterations < MAX_NTRIESPART
&& !rejected.isEmpty(); numberOfIterations++) {
input.forEach(it);
- if (rejected.isEmpty()) {
+ if(rejected.isEmpty()) {
/* Nothing was rejected, so we're done. */
return returned;
}
}
-
final String fmt = "Heuristic (more than %d iterations of partitioning) detected an unpartitionable list. (%s)\nThe following elements were not partitioned: %s\nCurrent group in formation: %s\nPreviously formed groups: %s\n";
- final String msg = String.format(fmt, MAX_NTRIESPART, input.toString(), rejected.toString(), it.currentPartition.toString(), returned.toString());
+ final String msg = String.format(fmt, MAX_NTRIESPART, input.toString(), rejected.toString(),
+ it.currentPartition.toString(), returned.toString());
throw new IllegalArgumentException(msg);
}
@@ -215,20 +210,19 @@ public class ListUtils {
* Merge the contents of a bunch of lists together into a single list.
*
* @param <E>
- * The type of value in this lists.
+ * The type of value in this lists.
*
* @param lists
- * The values in the lists to merge.
+ * The values in the lists to merge.
*
- * @return
- * A list containing all the elements of the lists.
+ * @return A list containing all the elements of the lists.
*/
@SafeVarargs
public static <E> IList<E> mergeLists(final IList<E>... lists) {
final IList<E> returned = new FunctionalList<>();
- for (final IList<E> list : lists) {
- for (final E itm : list.toIterable()) {
+ for(final IList<E> list : lists) {
+ for(final E itm : list.toIterable()) {
returned.add(itm);
}
}
@@ -240,25 +234,24 @@ public class ListUtils {
* Pad the provided list out to the desired size.
*
* @param <E>
- * The type of elements in the list.
+ * The type of elements in the list.
*
* @param list
- * The list to pad out.
+ * The list to pad out.
*
* @param counter
- * The function to count elements with.
+ * The function to count elements with.
*
* @param size
- * The desired size of the list.
+ * The desired size of the list.
*
* @param padder
- * The function to get elements to pad with.
+ * The function to get elements to pad with.
*
- * @return
- * The list, padded to the desired size.
+ * @return The list, padded to the desired size.
*
* @throws IllegalArgumentException
- * If the list couldn't be padded to the desired size.
+ * If the list couldn't be padded to the desired size.
*/
public static <E> IList<E> padList(final IList<E> list, final Function<E, Integer> counter, final int size,
final Supplier<E> padder) {
@@ -266,22 +259,22 @@ public class ListUtils {
final IList<E> returned = new FunctionalList<>();
- for (final E itm : list.toIterable()) {
+ for(final E itm : list.toIterable()) {
count += counter.apply(itm);
returned.add(itm);
}
- if (count % size != 0) {
+ if(count % size != 0) {
/* We need to pad */
int needed = count % size;
int threshold = 0;
- while (needed > 0 && threshold <= MAX_NTRIESPART) {
+ while(needed > 0 && threshold <= MAX_NTRIESPART) {
final E val = padder.get();
final int newCount = counter.apply(val);
- if (newCount <= needed) {
+ if(newCount <= needed) {
returned.add(val);
threshold = 0;
@@ -292,10 +285,11 @@ public class ListUtils {
}
}
- if (threshold > MAX_NTRIESPART) {
+ if(threshold > MAX_NTRIESPART) {
final String fmt = "Heuristic (more than %d iterations of attempting to pad) detected an unpaddable list. (%s)\nPartially padded list: %S";
- final String msg = String.format(fmt, MAX_NTRIESPART, list.toString(), returned.toString());
+ final String msg = String.format(fmt, MAX_NTRIESPART, list.toString(),
+ returned.toString());
throw new IllegalArgumentException(msg);
}