【发布时间】:2015-03-11 20:59:16
【问题描述】:
我正在尝试按对象中的多个属性进行过滤,在我的例子中是 CarObj:
List<String> colorList = (List<String>)filterCriteria.get("Color");
List<String> makeList = (List<String>)filterCriteria.get("Make");
List<String> rimSizeList = (List<String>)filterCriteria.get("RimSize");
Predicate<String> predColor = Predicates.in(ImmutableSet.copyOf(colorList));
Predicate<CarObj> predColor2 = Predicates.compose(predColor ,[????] );
Predicate<String> predMakeList = Predicates.in(ImmutableSet.copyOf(makeList));
Predicate<CarObj> predMakeList2 = Predicates.compose(predMakeList, [????] );
Predicate<String> predRimSize = Predicates.in(ImmutableSet.copyOf(rimSizeList));
Predicate<CarObj> predRimSize2 = Predicates.compose(predRimSize, [????] );
Collection<CarObj> filtered = FluentIterable.from(mAllCars)
.filter(predColor2)
.filter(predMakeList2)
.filter(predRimSize2)
.toList();
如何输入逻辑来处理 StartsWith 或 Contains 功能? 因此,如果用户在我的 CarObjs 集合中键入“Silver”,则 Model 属性具有“Silverado”、“Silverline”、“Silverpig”、“Tacoma”、“Accord”等...
我想找到一种过滤方法,以便它返回以“Silver”开头的汽车。它将返回符合其他 3 个过滤器(颜色、轮辋尺寸和制造)的 Silverado、Silverline 或 Silverpig 型号的所有汽车
【问题讨论】:
标签: java collections filter guava