Java Datum-Objekte sortieren

banz

Mitglied
Thread Starter
Mitglied seit
26.05.2003
Beiträge
408
Hallo,
wieder mal so eine ( für euch ) Kinderkram - Schulaufgaben - Frage.
Aufgabe: eine Menge von ca. 20 -200 Daten in einem Datumsformat sortieren.
Nach eingehender Recherche im Net rauscht mir nun der Kopf bei den unterschiedlichen Array und Containertypen, Listen und was weiss ich nicht alles.
Weil ich im Moment nicht weiter weiss, frage ich mal euch:

Eingegeben werden Strings in der Form "dd.mm.yyyy"
dann wird das zu einem GregorianCalendar - Objekt konvertiert, um zu überprüfen, ob es dieses Datum gibt / gab. ( Zumindest glaub ich das :)
Die anfallenden Daten sollen in ein Array oder Liste oder was weiss ich nach Jahr -> Monat -> Tag aufwärts sortiert werden.

Welche Containerart bietet sich hier an, die vielleicht sogar schon sortiert abspeichert?

mfg banz
 

jay

Mitglied
Mitglied seit
12.08.2003
Beiträge
159
hi.

es gibt verschieden möglichkeiten. eine davon wäre zb.

Code:
private void init() throws DateSortException
   {
      Object[] dateArray =  new Object[]{"22.12.2004", "12.02.2004", "30.12.2005"};
      ArrayList dateList = new ArrayList();
      
      for(int count = 0; count < dateArray.length; count++)
      {
         addToDateList(dateArray[count], dateList);
      }
      
      System.out.println(sortList(dateList));
   }
   
   private ArrayList sortList(ArrayList dateList) throws DateSortException
   {
      if(dateList != null)
      {
         Collections.sort(dateList); //liste sortieren
         return dateList;
      }
      else
      {
         throw new DateSortException("ne ne null!");
      }
   }
   
   private void addToDateList(Object date, ArrayList dateList) throws DateSortException
   {
      if((date != null) && (dateList != null))
      {
         if(!date.toString().equals(""))
         {
            String dateStr = date.toString().trim();
            if(dateStr.length() == 10) // auf richtige length checken
            {
               dateStr.replaceAll(".", ""); // dots entfernen
               dateList.add(dateStr);  // der liste hinzufuegen
            }
            else
            {
               throw new DateSortException("zu lang");
            }
         }
         else
         {
            throw new DateSortException("passt nit");
         }
      }
      else
      {
         throw new DateSortException("passt nit");
      }
   }
hth.jay

EDIT: zwecks check bist mit dem gregorian-cal schon auf dem richtigen weg. Danach wie gehabt. Sollte ja auch nur ein kleiner Denkanstoss werden. Du kannst auch, wenn du mit Date arbeitest, entweder Year, Month oder Day getrennt extrahieren. Beste Möglichkeit, als .getDate() extrahieren (dann bekommst du einen int), und diesen in die ArrayList schupsen. Oder einen eigenen Sort-Alg entwerfen ;).
 
Zuletzt bearbeitet:

banz

Mitglied
Thread Starter
Mitglied seit
26.05.2003
Beiträge
408
danke ;-)

Die Überprüfung , ob ein Datum richtig ist, mache ich jetzt doch einfacher mit

public Date verify_Dat( String datStr ) throws ParseException
{
DateFormat datForm = DateFormat.getDateInstance();
datForm.setLenient( false );
Date dat = datform.parse( datStr );
return dat;
}

*Nachdem ich schon die wildesten if abfragen zusammengbastelt hatte *gg* war das Günstigste natürlich viel zu offensichtlich*.

Werde wohl auch eine ArrayList nehmen und die, bei der Eingabe verifizierten Daten durch ein InsertionSort ( andem ich noch bastelle *rofl**grmpf* ) reinpacken.

vielen Dank für die Denkanstösse