There are various places around leveluplunch that show the power of guava's Collections2
utility class such as filter a collection, filter null from a collection, predicates example. This example will try to bring it together in one page.
Filter
@Test
public void filter () {
List<String> strings = Lists.newArrayList(
null, "www", null,
"leveluplunch", "com", null);
Collection<String> filterStrings = Collections2.filter(
strings, new Predicate<String>() {
@Override
public boolean apply(String input) {
return input != null && input.length() >= 3;
}
});
logger.info(filterStrings);
assertEquals(3, filterStrings.size());
}
Output
[www, leveluplunch, com]
Ordered Permutations
@Test
public void ordered_permutations () {
List<Integer> vals = Lists.newArrayList(1, 2, 3);
Collection<List<Integer>> orderPerm =
Collections2.orderedPermutations(vals);
for (List<Integer> val : orderPerm) {
logger.info(val);
}
assertEquals(6, orderPerm.size());
}
Output
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
Permutations
@Test
public void permutations () {
List<Integer> vals = Ints.asList(new int[] {1, 2, 3});
Collection<List<Integer>> orderPerm =
Collections2.permutations(vals);
for (List<Integer> val : orderPerm) {
logger.info(val);
}
assertEquals(6, orderPerm.size());
}
Output
[1, 2, 3]
[1, 3, 2]
[3, 1, 2]
[3, 2, 1]
[2, 3, 1]
[2, 1, 3]
Transform
@Test
public void transform () {
List<String> numbersAsStrings = Lists.newArrayList(
"1", "2", "3");
Collection<Double> doubles = Collections2.transform(
numbersAsStrings, new Function<String, Double>() {
@Override
public Double apply(String input) {
return new Double(input);
}
});
assertThat(doubles, contains(
new Double(1), new Double(2),
new Double(3)));
}