我需要根据时间窗口对元素进行排序,例如
8:00 - 9:00
8:00 - 11:00
9:00 - 10.00
9:00 - 12:00
到目前为止,我的想法是将打开时间和关闭时间分开排序Maps
,然后尝试创建最终的List
sortedList
。但是,我不确定这个想法是最有效的解决方案。有什么方法可以更简单地解决这个问题吗?
private List<Customer> sortCustomersByTimeWindows(List<Customer> _C)
{
List<Customer> sortedList = new ArrayList<Customer>();
Map<Integer,Integer> openTimes = new HashMap<Integer,Integer>();
Map<Integer,Integer> closeTimes = new HashMap<Integer,Integer>();
for (int i=0; i<_C.size(); i++)
{
openTimes.put(i,_C.get(i).getOpenTime());
closeTimes.put(i,_C.get(i).getCloseTime());
}
List<Integer> openTimes_values = new ArrayList<Integer>(openTimes.values());
List<Integer> closeTimes_values = new ArrayList<Integer>(closeTimes.values());
Collections.sort(openTimes_values, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
Collections.sort(closeTimes_values, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
for (int i=0; i<_C.size(); i++)
{
//...
}
return sortedList;
}