1

我有一个对象说

class ABC{
private String name;

private String code;

private BigDecimal priceM;

private BigDecimal priceL;

private BigDecimal priceO;

 public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public BigDecimal getPriceM() {
        return priceM;
    }

    public void setPriceM(BigDecimal priceM) {
        this.priceM = priceM;
    }

    public BigDecimal getPriceL() {
        return priceL;
    }

    public void setPriceL(BigDecimal priceL) {
        this.priceL = priceL;
    }

    public BigDecimal getPriceO() {
        return priceO;
    }

    public void setPriceO(BigDecimal priceO) {
        this.priceO = priceO;
    }



}

现在,假设我有一个 ABC 列表,并且在某些时候我希望该列表根据 searchCriteria 进行过滤。

有没有什么有效的方法来实现这一点......???

例子 ,

我有

目标:列出,我想要新的列表,其中包含 ABC 的列表,priceM 值在 100 到 200 之间

4

3 回答 3

1

JDK 8中的新 API

List<ABC> items = asList(...);
Stream<ABC> stream = items.stream();
stream.filter( item -> item.getPrice() >= 100 && item.getPrice() <= 200 )
      .forEach ( System.out::println );
于 2012-12-24T08:14:43.397 回答
1

Google Guava 有一些关于MatchersPredicate的课程,也许可以提供帮助

http://java.dzone.com/articles/google-guava-goodness-matching

或许可以使用反射实现自动匹配

于 2012-12-24T07:39:14.543 回答
0

Java 提供了一个Collection.sort(list, comp)方法,它接受一个列表和Comparator对象作为参数

在这种情况下,传递您需要排序的原始列表并创建一个 Comparator 对象并覆盖作为排序规则的 compare 方法。

您可以根据您的要求创建多个Comparator对象。

请参阅以下链接以获取更多帮助。

  1. http://www.vogella.com/blog/2009/08/04/collections-sort-java/

  2. 如何在不同的时间按不同的参数对列表进行排序

于 2012-12-24T08:17:09.890 回答