Como classificar dados por data em java antes de armazenar em uma matriz de objetos ou na lista que contém a matriz de objetos [Alguém pode.? Qualquer pista..

Estou recebendo três substrings diferentes de IDs de arquivo, nome da empresa e data

o recuperar, preciso armazenar classificados por valores de data no objet

Recuperei e converti a string para o formato de data que eu preciso e armazenado. em vez de puxar novamente toda vez usando a classificação sql, tentando armazenar as classificações por datas antes de inseri

class ReadingFile
{
    public static String input_path = ("C:\\Users\\RAVI\\Desktop\\Skills\\inputs");
    public static String output_path = ("C:\\Users\\RAVI\\Desktop\\Skills\\outputs");
    static BufferedReader br;
    void read(){
    SimpleDateFormat sdf = new SimpleDateFormat("hh:MM.ss");
    SimpleDateFormat parsingSdf = new SimpleDateFormat("hh:MM.ss a");
    ArrayList<Object[]> list = new ArrayList<Object[]>();
    try 
    {
    File fi = new File(input_path);
    File[] fileCount = fi.listFiles();
    for (int i = 0; i < fileCount.length; i++) 
        {
        File file = fileCount[i];
        if (file.isFile()) 
            {
            System.out.println("Total file count : " + fileCount.length);
            String fileName = file.getName();
            System.out.println("File name : " + fileName);
            String data;
            br = new BufferedReader(new FileReader(input_path + "\\"+ fileName));
            while ((data = br.readLine()) != null) 
            {
            if (data.contains(">")) 
                {
                Object[] received = new Object[3];
                String dat = data.substring(data.indexOf(" ") + 1,
                data.indexOf("-") - 1);
                // System.out.println(dat);
                Date date = sdf.parse(dat.substring(
                dat.indexOf(" "), dat.lastIndexOf(".")));
                // System.out.println(date);
                String timeFormat = parsingSdf.format(date);
                // System.out.println(timeFormat);
                received[0] = dat.substring(dat.indexOf("0"),dat.indexOf(" ") + 1)+ timeFormat;
                // System.out.println(received[0]);
                received[1] = data.substring(data.indexOf("<") + 1,data.indexOf(",") - 1);
                // System.out.println(received[1]);
                received[2] = data.substring(data.indexOf("Target"),data.lastIndexOf("."));
                //System.out.println(received[2]);
                list.add(received);
                }
            }
        }
    }

Entrada de amostra e respectiva saída adicionada abaixo

input
(8834675) 06/01/2013 04:03.36.562 -->Successful password change for user=<U753838>, Password Target=<DOW>.
(8858218) 06/01/2013 07:18.42.312 -->Successful password change for user=<U640630>, Password Target=<DOW>.
(8893874) 06/01/2013 12:14.42.410 -->Successful password change for user=<U090521>, Password Target=<DOW>.

saíd

06/01/2013 04:03.36 AM U753838 Target=<DOW>
06/01/2013 07:06.42 AM U640630 Target=<DOW>
06/01/2013 12:02.42 AM U090521 Target=<DOW>

questionAnswers(3)

yourAnswerToTheQuestion