我的软件上有一个对象列表,我想通过一个公共字段进行排序,例如:
List<Object> obj
ID 1 Price 0.0
ID 1 Price 1.2
ID 1 Price 1.3
ID 2 Price 2.0
我可以对列表进行排序以使ID=1的对象只出现一次吗?在这种情况下,列表中只剩下ID=1的第一个对象,例如:
ID 1 Price 0.0
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<Obj> result = objects.stream().distinct().collect(Collectors.toList());
问题内容: 我有一个Java对象列表,希望根据多个字段进行排序。 是否可以使用或接口根据多个字段对列表进行排序?我看到的所有示例仅根据一个领域进行排序。换句话说,可以按“校园”或“教师”或“建筑”进行排序。我想按“校园”,“教师”,“建筑”(因为它在SQL中存在)进行排序 问题答案: 您的比较器如下所示: 基本上,只要到目前为止已比较的属性相等(),它就会继续比较类的每个连续属性。
我有一个小问题,希望你能帮我解决。 我有一个名为Entity的类,它有几个属性,其中两个属性是id和实用程序: 然后,我在ArrayList中有几个Entity对象,如下所示: 现在,我想根据公用事业实体对列表进行排序。我使用一个定制的比较器,尝试了几种类似我在这里读到的解决方案: 但是在这条线上: 我遇到了以下错误:int不能被解引用,我不知道如何修复它。你们能帮我解决这个问题或者给出另一个解决
rank ▲ ✰ vote url 49 432 198 616 url 通过列表中字典的值对列表进行排序 我的到了一个字典的列表,我想对字典的值进行排序. [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}] 对name进行排序,应当是: [{'name':'Bart', 'age':10}, {'name':'Homer', 'age
问题内容: 我使用python创建原型,并且为此使用了zip函数,但不确定如何在Java中执行此操作。基本上,我有两个列表(一个是名称,一个是数据),希望它们相对于彼此排序。我的程序仅处理列表(在这种情况下为数据),但是我将名称用作对正在处理的数据的引用,并且我想尝试以不同的顺序处理数据。这是结构的一个示例(实际上我的数据没有提供给我存储,但是我会对其进行基本排序或反向排序,没什么花哨的)。 所以
问题内容: 我想对命名元组的列表进行排序,而不必记住字段名的索引。我的解决方案似乎很尴尬,希望有人能提供一个更优雅的解决方案。 谢谢,尼克 问题答案: 按名称排序列表 按年龄排序列表
问题内容: 和骗局。如何按升序排序,然后按?有人可以帮忙吗?我知道在中具有通用算法和重载运算符,但是我是Java新手。 问题答案: 使实现或在单独的类中实现。然后致电: 要么 通常,如果有一个单一的“自然”排序顺序,则实施是个好主意…否则(如果你碰巧想要按特定顺序进行排序,但可能同样容易地希望使用另一个顺序),则最好实现。老实说,这种特殊情况可能会发生任何一种……但是我可能会坚持使用更灵活的选择。