【发布时间】:2014-04-04 16:52:57
【问题描述】:
我正在尝试构建一个选择菜单对象。我正在使用休眠标准来构建我的对象列表。我正在尝试将我的连接表对象添加到集合中以消除重复项。然后我想通过对象中的属性对集合进行排序,一旦排序,我需要将其添加到数组列表中,最后在列表末尾添加一个额外的条目。
这是我到目前为止所拥有的。
public class Computer {
private String name;
//other properties getter/setter
}
选择菜单查询
public List<Computer> getComputerList() {
//Hibernate critera query
List<ComputerConfiguration> results = session.criteraQuery(ComputerConfiguration.class).add(Restrictions.eq("processor", "amd")).list();
Set<Computer> computerSet = HashSet();
//Get joined object and add to set to remove duplicates
for(ComputerConfiguration computerConfiguration : results) {
computerSet.add(computerConfiguration.getComputer());
}
List<Computer> computers = new ArrayList<>(computerSet);
//Need to somehow order by computer.getName();
//Lastly add the following
computers.add("Other");
//Return computers to select model
return computers;
}
删除重复对象然后按属性名称对它们进行排序的最有效方法是什么?我最初只是尝试对标准查询进行排序,但是该集合似乎没有保持其位置。
谢谢。
【问题讨论】:
-
你可以改变你的查询只返回唯一的结果,你根本不需要使用 Set
-
@Jakub hr 不幸的是我不知道如何做到这一点。
-
您应该更详细地描述您的
Computer课程。它是否具有equals(和hashCode)的适当实现?应该使用什么排序规则? -
我目前只用哈希等于覆盖 id "pk"。除了我的身份证,班上只有名字。非常简单的查找表。