zoukankan      html  css  js  c++  java
  • Guava之Iterables使用示例

    这是一个常量工具类。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.
     *
     * <p>This method calls Collection#removeAll if iterable is a
     * collection, and Iterators#removeAll otherwise.
     */
    @CanIgnoreReturnValue
    public 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) {
            List<String> list = Lists.newArrayList();
            list.add("one");
            list.add("two");
            list.add("three");
            List<String> 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.
     *
     * <p>This method calls Collection#retainAll if iterable is a
     * collection, and Iterators#retainAll otherwise.
     */
    @CanIgnoreReturnValue
    public 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) {
            List<String> list = Lists.newArrayList();
            list.add("one");
            list.add("two");
            list.add("three");
            List<String> 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.
     *
     * <p>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}.
     */
    @CanIgnoreReturnValue
    public static <T> boolean removeIf(Iterable<T> removeFrom, Predicate<? super T> predicate) {
      if (removeFrom instanceof RandomAccess && removeFrom instanceof List) {
        return removeIfFromRandomAccessList((List<T>) removeFrom, checkNotNull(predicate));
      }
      return Iterators.removeIf(removeFrom.iterator(), predicate);
    }

    实例:

    public class Test {
        public static void main(String[] args) {
            List<String> list = Lists.newArrayList();
            list.add("one");
            list.add("three");
            list.add("two");
            list.add("two");
            list.add("three");
            Iterables.removeIf(list, new Predicate<String>() {
                // 移除集合中使得apply()方法返回为true的元素
                @Override
                public boolean apply(String input) {
                    return input.length() == 5;
                }
            });
            // [one, two, two]
            System.out.println(list.toString());
        }
    }
  • 相关阅读:
    Mongodb 与 MySQL对比
    MongoDB的真正性能-实战百万用户
    走进科学之揭开神秘的"零拷贝"!
    对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
    <Netty>(入门篇)TIP黏包/拆包问题原因及换行的初步解决之道
    MSSQL复制功能实现与Oracle数据库同步
    SQLServer与Oracle的数据同步(触发器trigger)
    ORACLE和SQL SERVER的数据同步常用方法
    MS SQL SERVER: msdb.dbo.MSdatatype_mappings & msdb.dbo.sysdatatypemappings
    FORM 错误:此责任无可用函数。 更改责任或与您的系统管理员联系。
  • 原文地址:https://www.cnblogs.com/winner-0715/p/8576887.html
Copyright © 2011-2022 走看看