可以通过公共字段对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());