这是一个常量工具类。Iterables类包含了一系列的静态方法,来操作或返回Iterable对象。
public final class Iterables { private Iterables() {}}
1.boolean removeAll(Iterable removeFrom,Collection elementsToRemove)
/** * Removes, from an iterable, every element that belongs to the provided * collection. * *This method calls Collection#removeAll if iterable is a * collection, and Iterators#removeAll otherwise. */@CanIgnoreReturnValuepublic static boolean removeAll(Iterable
removeFrom, Collection elementsToRemove) { return (removeFrom instanceof Collection) ? ((Collection ) removeFrom).removeAll(checkNotNull(elementsToRemove)) : Iterators.removeAll(removeFrom.iterator(), elementsToRemove);}
实例:
public class Test { public static void main(String[] args) { Listlist = Lists.newArrayList(); list.add("one"); list.add("two"); list.add("three"); List list2 = Lists.newArrayList(); list2.add("two"); list2.add("four"); System.out.println(Iterables.removeAll(list, list2)); // true System.out.println(list.toString()); // [one, three] }}
2.boolean retainAll(Iterable removeFrom,Collection elementsToRetain)
/** * Removes, from an iterable, every element that does not belong to the * provided collection. * *This method calls Collection#retainAll if iterable is a * collection, and Iterators#retainAll otherwise. */@CanIgnoreReturnValuepublic static boolean retainAll(Iterable
removeFrom, Collection elementsToRetain) { return (removeFrom instanceof Collection) ? ((Collection ) removeFrom).retainAll(checkNotNull(elementsToRetain)) : Iterators.retainAll(removeFrom.iterator(), elementsToRetain);}
实例:
public class Test { public static void main(String[] args) { Listlist = Lists.newArrayList(); list.add("one"); list.add("two"); list.add("three"); List list2 = Lists.newArrayList(); list2.add("two"); list2.add("three"); list2.add("four"); System.out.println(Iterables.retainAll(list, list2)); // true System.out.println(list.toString()); // [two, three] }}
3.boolean removeIf(Iterable removeFrom,Predicate predicate)
/** * Removes, from an iterable, every element that satisfies the provided * predicate. * *Removals may or may not happen immediately as each element is tested * against the predicate. The behavior of this method is not specified if * {
@code predicate} is dependent on { @code removeFrom}. */@CanIgnoreReturnValuepublic staticboolean removeIf(Iterable removeFrom, Predicate predicate) { if (removeFrom instanceof RandomAccess && removeFrom instanceof List) { return removeIfFromRandomAccessList((List ) removeFrom, checkNotNull(predicate)); } return Iterators.removeIf(removeFrom.iterator(), predicate);}
实例:
public class Test { public static void main(String[] args) { Listlist = Lists.newArrayList(); list.add("one"); list.add("three"); list.add("two"); list.add("two"); list.add("three"); Iterables.removeIf(list, new Predicate () { // 移除集合中使得apply()方法返回为true的元素 @Override public boolean apply(String input) { return input.length() == 5; } }); // [one, two, two] System.out.println(list.toString()); }}