Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为对象列表应用范围标准?_Java_Jakarta Ee_Collections_Arraylist - Fatal编程技术网

Java 如何为对象列表应用范围标准?

Java 如何为对象列表应用范围标准?,java,jakarta-ee,collections,arraylist,Java,Jakarta Ee,Collections,Arraylist,我有一个目标要说 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) {

我有一个目标要说

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列表,在某个时刻,我希望该列表根据搜索条件进行过滤

有什么有效的方法来实现这一点吗

例如

我有

目标
列表和我想要一个新的列表,它将包含价格在100到200之间的ABC列表

谷歌番石榴有一些关于匹配器和谓词的类,可能会有所帮助

也许您可以使用反射来实现中新API的自动匹配

List items=asList(…);
Stream=items.Stream();

stream.filter(item->item.getPrice()>=100&&item.getPrice()Java提供了一个Collection.sort(list,comp)方法,该方法将list和Comparator对象作为参数

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

您可以根据需要创建多个比较器对象

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


  • 以什么方式有效?您可以轻松地迭代该列表并放置条件以检查是否获得筛选对象。由于它是用户定义的类,您必须在使用getter和filter进行迭代时检查该值。如果我在for循环中使用if条件,则它的性能无效。您是否使用任何探查器检查/测量它,这就是您需要检查的区域需要效率吗?首先,在for循环中使用“if”是一种不好的做法……我认为它对java不适用……谢谢edwin,但我使用的是JDK1.7。
    List<ABC> items = asList(...);
    Stream<ABC> stream = items.stream();
    stream.filter( item -> item.getPrice() >= 100 && item.getPrice() <= 200 )
          .forEach ( System.out::println );