我有一个对象的 ArrayList,在每个对象中,我都有一个日期和一个小时,我已经将它们转换为 int 进行排序。我已经按日期对对象列表进行了排序,现在我想按保持日期排序的小时对相同的数组列表进行排序。
情况的一个小例子:
我有一个带有方法 getDateEvent() 和 getHourEvent() 的事件对象,它返回一个可排序的数据和小时值,如 YYYYMMDD 和 HHMM
一个已经按日期排序的事件数组列表,所以我必须按小时对数组列表进行排序,保持日期排序。
我的代码实际上是这样的:
private ArrayList<Evento> SortingHour(ArrayList<Evento> SortingList){
int t=0;
int counter=0;
ArrayList<Evento> finale = new ArrayList<>();
ArrayList<Evento>[] Array = new ArrayList[SortingList.size()];
while(counter<SortingList.size()){
if( SortingList.get(counter).getDateEvent()).equals(SortingList.get(counter+1).getDateEvent()))) {
Array[t].add(SortingList.get(counter));
Array[t].add(SortingList.get(counter+1));
counter++;
}else{
t++;
Array[t].add(SortingList.get(counter));}
counter++;
}
for(int c=0;c<t;c++) {
for (int c1 = 0; c1 < Array[c].size(); c1++) {
for (int c2 = 0; c2 < Array[c].size(); c2++) {
if (Integer.parseInt(Array[c].get(c1).getHourEvent()) < Integer.parseInt(Array[c].get(c2).getHourEvent())) {
Collections.swap(Array[c], c1, c2);
}
}
}
}
for(int c=0; c<t;c++){
finale.addAll(Array[c]);
}
return finale;
}
尝试这样的事情:
public ArrayList<Item> sort(List<Item> list) {
ArrayList<Item> dateSort= new ArrayList<>();
ArrayList<Item> result = new ArrayList<>();
if (list!= null && list.size() != 0) {
dateSort= new ArrayList<>(list);
Collections.sort(
dateSort, (o1, o2) -> Integer.compare(o1.getIntDate(), o2.getIntDate()));
int currentDate = dateSort.get(0).getIntDate();
ArrayList<Item> temp= new ArrayList<>();
for (int i = 1; i < dateSort.size(); i++) {
if (dateSort.get(i).getIntDate() > currentDate ) {
currentDate = dateSort.get(i).getIntDate();
result.addAll(timeSort(temp));
temp.clear();
temp.add(dateSort.get(i));
}
else{
temp.add(dateSort.get(i));
}
}
}
return result;
}
private ArrayList<Item> timeSort(List<Item> list) {
ArrayList<Item> timeSort= new ArrayList<>();
if (list!= null && list.size() != 0) {
timeSort= new ArrayList<>(list);
Collections.sort(
timeSort, (o1, o2) -> Integer.compare(o1.getIntTime(), o2.getIntTime()));
}
return timeSort;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句