時間枠に基づいて要素を並べ替える必要があります。
8:00 - 9:00
8:00 - 11:00
9:00 - 10.00
9:00 - 12:00
これまでのところ、私の考えは、open 時間と close 時間を別々にソートして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;
}