gpt4 book ai didi

java - 根据时间窗口对元素进行排序

转载 作者:行者123 更新时间:2023-12-01 18:43:11 24 4
gpt4 key购买 nike

我需要根据时间窗口对元素进行排序,例如

8:00 - 9:00 
8:00 - 11:00
9:00 - 10.00
9:00 - 12:00

到目前为止,我的想法是将开放时间和关闭时间排序为单独的Map,然后尝试创建最终的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;
}

最佳答案

只需使用自定义比较器即可根据时间对客户进行排序:

Collections.sort(_C, new Comparator<Customer>() {
@Override
public int compare(Customer c1, Customer c2) {
int openTimeDiff = c1.getOpenTime() - c2.getOpenTime();
if (openTimeDiff != 0)
return openTimeDiff;
return c1.getCloseTime() - c2.getCloseTime();
}
});

关于java - 根据时间窗口对元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19029853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com