gpt4 book ai didi

java - 仅当谓词输入不是空字符串时使用 Guava 过滤对象

转载 作者:行者123 更新时间:2023-12-02 09:09:14 25 4
gpt4 key购买 nike

我现在正在学习 Guava,但遇到了问题。我有三个可能的字符串过滤器。问题是我只想在字符串不是 "" (空字符串)时过滤对象集合。我的另一个问题是如何过滤对象中的不同成员,例如 object.getName() == firstStringFilter。如果有人知道如何做到这一点,我将不胜感激。

解决方案

这就是我最终对我的代码所做的。如果我的第一个字符串过滤器不为空,则应用该过滤器,并且与其他两个字符串过滤器相同。我使用相同的列表并用过滤器的结果覆盖它。

List<Field> fieldList = mLand.getFields();

if(!filterPattern.equalsIgnoreCase(""))
{
Predicate predicate = new Predicate<Field>()
{
@Override
public boolean apply(Field input)
{
return input.getName()
.toLowerCase()
.contains(filterPattern);
}
};

Collection<Field> result = Collections2.filter(fieldList, predicate);

fieldList = new ArrayList<>(result);

}

if(!cropStringPattern.equalsIgnoreCase(""))
{
Predicate predicate = new Predicate<Field>()
{
@Override
public boolean apply(Field input)
{
return input.getCrop().getName()
.toLowerCase()
.contains(cropStringPattern);
}
};

Collection<Field> result = Collections2.filter(fieldList, predicate);

fieldList = new ArrayList<>(result);
}

if(!varietyStringPattern.equalsIgnoreCase(""))
{
Predicate predicate = new Predicate<Field>()
{
@Override
public boolean apply(Field input)
{
return input.getCrop().getVariety().getName()
.toLowerCase()
.contains(varietyStringPattern);
}
};

Collection<Field> result = Collections2.filter(fieldList, predicate);

fieldList = new ArrayList<>(result);
}

最佳答案

听起来你的对象不是字符串,而是它们有一个字符串属性,所以这就像

 Iterables.filter(objects, new Predicate<MyObject>() {
@Override public boolean apply(MyObject object) {
return !object.getName().isEmpty(); // or whatever condition here
}
});

关于java - 仅当谓词输入不是空字符串时使用 Guava 过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com