前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Guava-1.19类Predicates

Guava-1.19类Predicates

作者头像
悠扬前奏
发布2019-05-30 20:21:29
5230
发布2019-05-30 20:21:29
举报

全路径名:

com.google.common.base ** Predicates**

简介

包含实用的静态方法用和Predicates实例有关。

只要给定的参数是可序列化的,所有的方法返回可序列化的断言(predicates)。

方法

alwaysTrue
代码语言:javascript
复制
/** Returns a predicate that always evaluates to {@code true}. */
  @GwtCompatible(serializable = true)
  public static <T> Predicate<T> alwaysTrue()

返回为真的predicate

alwaysTrue
代码语言:javascript
复制
@GwtCompatible(serializable = true)
  public static <T> Predicate<T> alwaysFalse()

返回为假的predicate

isNull
代码语言:javascript
复制
@GwtCompatible(serializable = true)
  public static <T> Predicate<T> isNull()

返回为空的predicate

notNull
代码语言:javascript
复制
@GwtCompatible(serializable = true)
  public static <T> Predicate<T> notNull(

返回非空的predicate

not
代码语言:javascript
复制
public static <T> Predicate<T> not(Predicate<T> predicate)

如果参数为真,返回为假的predicate。

and
代码语言:javascript
复制
public static <T> Predicate<T> and(Iterable<? extends Predicate<? super T>> components)

 @SafeVarargs
  public static <T> Predicate<T> and(Predicate<? super T>... components)

or
代码语言:javascript
复制
 public static <T> Predicate<T> or(Iterable<? extends Predicate<? super T>> components)

@SafeVarargs
  public static <T> Predicate<T> or(Predicate<? super T>... components) 

equalTo
代码语言:javascript
复制
public static <T> Predicate<T> equalTo(@NullableDecl T target)

判断相等。如果测试对象为null,返回false。

instanceOf
代码语言:javascript
复制
@GwtIncompatible // Class.isInstance
  public static Predicate<Object> instanceOf(Class<?> clazz)

判断是否是实例。

assignableFrom(subtypeOf)

@since 20.0 (since 10.0 under the incorrect name {@code assignableFrom})

代码语言:javascript
复制
 @GwtIncompatible // Class.isAssignableFrom
  @Beta
  public static Predicate<Class<?>> subtypeOf(Class<?> clazz)
in
代码语言:javascript
复制
public static <T> Predicate<T> in(Collection<? extends T> target)

检查是否包含。

compose
代码语言:javascript
复制
 public static <A, B> Predicate<A> compose(
      Predicate<B> predicate, Function<A, ? extends B> function)

复合计算

containsPattern
代码语言:javascript
复制
@GwtIncompatible // Only used by other GWT-incompatible code.
  public static Predicate<CharSequence> containsPattern(String pattern)

正则校验

contains
代码语言:javascript
复制
@GwtIncompatible(value = "java.util.regex.Pattern")
  public static Predicate<CharSequence> contains(Pattern pattern)

用正则检查是否包含。

例子

对满足条件的对象进行过滤
  • 用户类对象
代码语言:javascript
复制
public class User {
    private int userId;
    private String username;
    private int age;

    // getter and setter ...
    // toString()
}
  • 构建用户列表,并进行过滤,注意其中的lambda表达式。
代码语言:javascript
复制
public class PredicateTest {

    public static void main(String[] args) {
        Joiner joiner = Joiner.on("\n");
        List<User> users = new ArrayList<User>();
        users.add(new User(1, "user1", 11));
        users.add(new User(2, "user2", 21));
        users.add(new User(3, "user2", 41));
        users.add(new User(4, "user3", 31));

        // 保留小于30岁的用户
        Predicate<User> predicateAge = input -> (input.getAge() < 30);
        //显示过滤结果
        System.out.println(
                joiner.join(Lists.newArrayList(Iterables.filter(users, predicateAge))
                )
        );
//        {id: 1; username: user1; age: 11;}
//        {id: 2; username: user2; age: 21;}

        // 保留名字为user2的用户
        Predicate<User> predicateName = input -> "user2".equals(input.getUsername());
        //显示过滤结果
        System.out.println(
                joiner.join(Lists.newArrayList(Iterables.filter(users, predicateName))
                )
        );
//        {id: 2; username: user2; age: 21;}
//        {id: 3; username: user2; age: 41;}

        // 保留名字为user2且年龄小于30的
        Predicate<User> predicateAnd = Predicates.and(predicateAge, predicateName);
        //显示过滤结果
        System.out.println(
                joiner.join(Lists.newArrayList(Iterables.filter(users, predicateAnd))
                )
        );
//        {id: 2; username: user2; age: 21;}

        // 保留名字为user2或年龄小于30的
        Predicate<User> predicateOr = Predicates.or(predicateAge, predicateName);
        //显示过滤结果
        System.out.println(
                joiner.join(Lists.newArrayList(Iterables.filter(users, predicateOr))
                )
        );
//        {id: 1; username: user1; age: 11;}
//        {id: 2; username: user2; age: 21;}
//        {id: 3; username: user2; age: 41;}

        // 保留名字不是user2的
        Predicate<User> predicateNot = Predicates.not(predicateName);
        //显示过滤结果
        System.out.println(
                joiner.join(Lists.newArrayList(Iterables.filter(users, predicateNot))
                )
        );
//        {id: 1; username: user1; age: 11;}
//        {id: 4; username: user3; age: 31;}
    }
}

其中的lambda表达式

代码语言:javascript
复制
Predicate<User> predicateAge = input -> (input.getAge() < 30);

原写法是:

代码语言:javascript
复制
 Predicate<User> predicateAge2 = new Predicate<User>(){
            @Override
            public boolean apply(@NullableDecl User input) {
                return (input.getAge() < 30);
            }
        };
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全路径名:
  • 简介
  • 方法
    • alwaysTrue
      • alwaysTrue
        • isNull
          • notNull
            • not
              • and
                • or
                  • equalTo
                    • instanceOf
                      • assignableFrom(subtypeOf)
                        • in
                          • compose
                            • containsPattern
                              • contains
                              • 例子
                                • 对满足条件的对象进行过滤
                                相关产品与服务
                                文件存储
                                文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档