Java 比较对象ArrayList的日期方面

Java 比较对象ArrayList的日期方面,java,sorting,date,collections,Java,Sorting,Date,Collections,我正在尝试使用Collections.sort(arraylist)功能对包含日期对象的对象进行排序。我想对arraylist进行排序,以便日期确定它们在arraylist中的排序位置 目前没有进行排序。我正在上传目录中包含的所有文件,并从这些文件中删除行,这些文件包含日期。但是,Collection.sort功能似乎没有任何作用。文件到达时会被分类 我将有一个简单的例子说明排序是如何进行的,然后是我的代码 分类: "2015-08-05 13:18:59.199","RFBase-TD","4

我正在尝试使用Collections.sort(arraylist)功能对包含日期对象的对象进行排序。我想对arraylist进行排序,以便日期确定它们在arraylist中的排序位置

目前没有进行排序。我正在上传目录中包含的所有文件,并从这些文件中删除行,这些文件包含日期。但是,Collection.sort功能似乎没有任何作用。文件到达时会被分类

我将有一个简单的例子说明排序是如何进行的,然后是我的代码

分类:

"2015-08-05 13:18:59.199","RFBase-TD","40","Device message","S",";0CC4: F2FF: 04C7: pitv1"
"2015-08-24 08:45:13.977","RFBase-TD","40","Device message","S","0028:  00 63 7E 21  00CA: "
"2015-08-18 11:35:48.891","RFBase-TD","40","Device message","S",";0006: 8490: 0000: ltpv4"
"2015-08-12 14:30:42.778","RFBase-TD","40","Device message","S",";1066: 6E25: 00C7: bctv1"
main.java中的代码:

private static ArrayList<logObject> rftdArrayList = new ArrayList<logObject>();

private static void createFolderChooser(final JFrame fcFrame) throws IOException
{
    resetArrayLists();

    int i = 1; int j = 1;
    fcFrame.setVisible(true);
    String filename = File.separator+"tmp";
    JFileChooser fileChooser = new JFileChooser(new File(filename));
    fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    fileChooser.showOpenDialog(fcFrame);
    lblFileChosen.setText("Folder Chosen: "+ fileChooser.getSelectedFile());
    File[] files = fileChooser.getSelectedFile().listFiles();
    LogFileTA_1.setText(null);
    System.out.println(files.length);
    for ( File file : files ) {
        System.out.println(file.getName());
    }
    if (files.length != 0)
    {
        JProgressBar progressBar = new JProgressBar();
        progressBar.setStringPainted(true);
        Border border = BorderFactory.createTitledBorder("Calcualating...");
        progressBar.setBorder(border);
        fcFrame.add(progressBar);
        fcFrame.setVisible(true);

        double percent = 0;
        int intPercent = 0;
        progressBar.setValue(intPercent);

        for (File f : files)    
        {
            if (f.isFile())
            {
                BufferedReader inputStream = null;
                String text = null;

                try {
                    inputStream = new BufferedReader(new FileReader(f));
                    String line = null;

                    while ((line = inputStream.readLine()) != null) 
                    {
                        if (line.contains("RFBase-TD")){
                            rftdArrayList.add(new logObject(line,i));
                            if (i<10)
                            {
                                LogFileTA_1.append(i+")      "+line);
                                LogFileTA_1.append("\n");
                            }
                            else if(i<100)
                            {
                                LogFileTA_1.append(i+")    "+line);
                                LogFileTA_1.append("\n");   
                            }
                            else if(i<1000)
                            {
                                LogFileTA_1.append(i+")   "+line);
                                LogFileTA_1.append("\n");   
                            }
                            else
                            {
                                LogFileTA_1.append(i+") "+line);
                                LogFileTA_1.append("\n");   
                            }
                            i++;
                        }
                    }
                }
                finally {
                    if (inputStream != null) {
                        inputStream.close();
                    }
                }
                j++;
                percent = 100*(j/files.length);
                intPercent = (int) (percent + 0.5); //Adds .5 in order to round.
                progressBar.setValue(intPercent);
            }
        }
        if (rftdArrayList.size() == 0)
        {
        }
        else
        {
            LogFileTA_1.setCaretPosition(0);
            logFileResults();
        }   
    }
    else 
    {
        JOptionPane.showMessageDialog(frmRftdAnalyzer, "Folder contains no RFTD log files", "Error", JOptionPane.ERROR_MESSAGE);
    }
}

private void initialized()
{       

        mntmOpen.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                errorTree.setModel(null);
                createFileChooser(frmRftdAnalyzer);             
            }

        });
}
private static ArrayList rftdArrayList=new ArrayList();
私有静态void createFolderChooser(最终JFrame fcFrame)引发IOException
{
resetArrayList();
int i=1;int j=1;
fcFrame.setVisible(真);
字符串文件名=File.separator+“tmp”;
JFileChooser fileChooser=newjfilechooser(新文件(文件名));
fileChooser.setFileSelectionMode(仅限JFileChooser.DIRECTORIES_);
fileChooser.showOpenDialog(fcFrame);
lblfileselected.setText(“所选文件夹:+fileChooser.getSelectedFile());
File[]files=fileChooser.getSelectedFile().listFiles();
LogFileTA_1.setText(null);
System.out.println(files.length);
用于(文件:文件){
System.out.println(file.getName());
}
如果(files.length!=0)
{
JProgressBar progressBar=新的JProgressBar();
progressBar.SetStringPaint(真);
Border Border=BorderFactory.createTitleBorder(“计算…”);
progressBar.订单(边界);
fcFrame.add(进度条);
fcFrame.setVisible(真);
百分之二=0;
整数百分比=0;
progressBar.setValue(百分比);
用于(文件f:文件)
{
if(f.isFile())
{
BufferedReader inputStream=null;
字符串文本=空;
试一试{
inputStream=新的BufferedReader(新的文件读取器(f));
字符串行=null;
而((line=inputStream.readLine())!=null)
{
if(行包含(“RFBase TD”)){
rftdArrayList.add(新logObject(行,i));

如果(I请发布代码,说明如何将元素添加到列表中,然后如何调用organizeArrayList()。我添加了代码,organizeArrayList()的实际名称实际上是createFolderChooser()。我已经相应地更新了所有内容。这里有很多代码,模糊了对问题的理解。请参阅。您的示例代码没有调用
集合。sort
任何地方。您可以添加该部分吗?嘿,Mick,我把Collection.sort放在错误的位置,因为我有两个非常相似的函数。事情似乎排序正确y现在。谢谢!请发布代码,说明如何将元素添加到列表中,然后如何调用organizeArrayList()。我添加了代码,organizeArrayList()的实际名称实际上是createFolderChooser()。我已经相应地更新了所有内容。这里有很多代码,模糊了对问题的理解。请参阅。您的示例代码没有调用
集合。sort
任何地方。您可以添加该部分吗?嘿,Mick,我把Collection.sort放在错误的位置,因为我有两个非常相似的函数。事情似乎排序正确好了,谢谢你!
public class logObject implements Comparable<logObject>
{
    protected String logEntry;
    protected int lineNumber;
    protected String time;
    protected String device;
    protected String deviceThrough;
    protected String deviceArea;
    protected String endTime;
    protected String timeElapsed;
    protected int endLine;
    protected String dateAndTime;
    protected Date date;
    protected SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH);

    public logObject(String logEntry, int lineNumber)
    {
        this.logEntry = logEntry;
        this.lineNumber = lineNumber;
        this.time = logEntry.substring(12,24);
        this.dateAndTime = logEntry.substring(1,24);
        try {
            this.date = formatter.parse(dateAndTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //System.out.println(date.getTime());
        this.device = null;
        this.deviceThrough = null;
        this.deviceArea = null;
        this.endTime = null;
        this.endLine = 9999;
        this.timeElapsed = null;
    }
    public String getLogEntry()
    {
        return this.logEntry;
    }

    public void changeTimeElapsed(String timeElapsed)
    {
        this.timeElapsed = timeElapsed;
    }

    public long getDateTime()
    {
        return this.date.getTime();
    }

    public Date getDate()
    {
        return this.date;
    }

    @Override
    public int compareTo(logObject o) 
    {
        return this.getDate().compareTo(o.getDate());
        //return Long.valueOf(getDate().getTime()).compareTo(Long.valueOf(o.getDate().getTime()));
    }