मेरे पास ऑब्जेक्ट्स की एक ऐरेलिस्ट है, प्रत्येक ऑब्जेक्ट में मेरे पास एक तारीख और एक घंटा है जिसे मैंने सॉर्टिंग के लिए 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;
    }
0
Andrea Gurioli 18 अगस्त 2019, 17:59

2 जवाब

सबसे बढ़िया उत्तर

कुछ इस तरह का प्रयास करें:

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;
}
0
Jurij Pitulja 18 अगस्त 2019, 18:48

मैंने नीचे दिए गए उदाहरण बनाए हैं,

public class Timings {

    private LocalDate date;
    private int hour;

    public Timings(LocalDate date, int hour) {
        this.date = date;
        this.hour = hour;
    }

    public LocalDate getDate() {
        return date;
    }

    public int getHour() {
        return hour;
    }

    @Override
    public String toString() {
        return "Timings{" +
                "date=" + date +
                ", hour=" + hour +
                '}';
    }
}
public class Sorting {

    public static void main(String[] args) {

        LocalDate date = LocalDate.of(2015, 02, 20);
        LocalDate date1 = LocalDate.of(2018, 07, 12);
        LocalDate date2 = LocalDate.of(2017, 05, 10);

        Timings timings = new Timings(date, 10);
        Timings timings1 = new Timings(date1, 8);
        Timings timings2 = new Timings(date2, 12);

        List<Timings> dateList = List.of(timings, timings1, timings2);

        List<Timings> newList = dateList.stream()
                .sorted( (a1, a2) -> a1.getDate().compareTo(a2.getDate()))
                .sorted(Comparator.comparingInt(Timings::getHour))
                .collect(Collectors.toList());

        System.out.printf(newList);

    }
}

उपरोक्त में, पहली सॉर्ट विधि दिनांक के आधार पर छँटाई का ध्यान रखती है। दूसरा टेक घंटे के हिसाब से ख्याल रखता है।

मुझे नीचे का आउटपुट मिला है:

[Timings{date=2018-07-12, hour=8}, Timings{date=2015-02-20, hour=10}, Timings{date=2017-05-10, hour=12}]

-1
parrotjack 18 अगस्त 2019, 19:08