当我有一个FilterObject时,是否有任何复杂的方法来过滤对象列表..
public class FilterListOfBets {
private final String userId;
private final long betId;
private final int minBetTime;
private final int maxBetTime;
// constructor and get methods ..
}
..以及包含所有字段的投注列表,所以..
public class Bet {
private final long betId;
private final String userId;
private final long betTime;
}
..问题是FilterListObject的一些(如果不是全部)字段可以设置为null。结果取决于已设置的字段。 最后,我想要一个List filteredList,其中包含符合条件的所有对象。
例如,如果我知道设置了哪些值,我只需遍历列表:
for (Bet bet : listOfBets) {
if (betFilter.getUserId == bet.getUserId && betFilter.getBetId == bet.getBetId && ...)
}
如果将设置FilterListOfBets中的minBetTime和maxBetTime,则结果列表还应满足:minTime<时间< MAXTIME。
答案 0 :(得分:0)
您可以创建一个要与之比较的对象,然后使用guava fluentiterable或java stream等
FluentIterable.from(listOfObject)
.filter(new Predicate<FilterObject>(FilterObject item) {
return item.equals(myTestItem);
})
.toList();
我已经在手机上写了这个,所以请仔细检查,但希望你能得到这个想法