Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Arraylist_Lambda - Fatal编程技术网

可以通过公共字段对Java中的对象列表进行排序吗?

可以通过公共字段对Java中的对象列表进行排序吗?,java,list,arraylist,lambda,Java,List,Arraylist,Lambda,我的软件上有一个对象列表,我想通过一个公共字段进行排序,例如: List<Object> obj ID 1 Price 0.0 ID 1 Price 1.2 ID 1 Price 1.3 ID 2 Price 2.0 如何实现这一点?如果基于id字段重写equals和hashCode,则可以轻松计算不同元素的列表 例如: class Obj { private int id; private double price; public Obj(int id,

我的软件上有一个对象列表,我想通过一个公共字段进行排序,例如:

List<Object> obj
ID 1 Price 0.0
ID 1 Price 1.2
ID 1 Price 1.3
ID 2 Price 2.0

如何实现这一点?

如果基于
id
字段重写
equals
hashCode
,则可以轻松计算不同元素的列表

例如:

class Obj {
    private int id;
    private double price;

    public Obj(int id, double price) {
        this.id = id;
        this.price = price;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Obj))
            return false;

        return this.id == ((Obj) obj).id;
    }

    @Override
    public int hashCode() {
        return Integer.hashCode(id);
    }

    ...
}
以及:

List result=objects.stream().distinct().collect(Collectors.toList());

按ID分组,按价格(升序)对每个组进行排序,只取每个组的第一个元素您是否有
对象列表
s或您的数据有一些模型类?模型类。对象只是一个占位符如果你的类实现了基于id的hascode和equals,也许可以从列表中创建一个集合,我认为它会自动这样做。你应该在发布问题之前进行认真的研究。你真的认为你是第一个问“如何根据某些标准对列表进行排序”的人吗
class Obj {
    private int id;
    private double price;

    public Obj(int id, double price) {
        this.id = id;
        this.price = price;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Obj))
            return false;

        return this.id == ((Obj) obj).id;
    }

    @Override
    public int hashCode() {
        return Integer.hashCode(id);
    }

    ...
}
List<Obj> result = objects.stream().distinct().collect(Collectors.toList());