Java-如何打印名称以及排序日期?

时间:2012-03-06 05:53:49

标签: java regex date-sorting

我有一个名字和DateOfbirth的文件。我将BateOfBirth与正则表达式匹配,我想将它们存储到一个数组中,以便我可以对日期进行排序。我所做的是
文本文件:

name1   dd-MM-yyyy  
name2   dd-MM-yyyy
namw3  dd-MM-yyyy
name4  dd-MM-yyyy

我的代码:

    import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Scanner;
import java.util.*;
import java.text.*;

class SortDate{
public static void main(String args[]) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("dates.txt"));
File file = new File("dates.txt");
Scanner scanner = new Scanner(file);
int count = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
count++;
}
String[] names= new String[count];
List<Date> birthDates = new ArrayList<Date>();

for(int x=0;x<count;x++)
{
names[x]=br.readLine();
}
String Dates="\\d\\d-\\d\\d-\\d\\d\\d\\d";
Pattern pat=Pattern.compile(Dates);
for(String s:names){
try {

Matcher mat=pat.matcher(s);
while(mat.find()){
String str=mat.group();
DateFormat formatter ;

Date date ;
formatter = new SimpleDateFormat("dd-MM-yyyy");
date = (Date)formatter.parse(str);  
birthDates.add(date);

}
}catch (ParseException e)
  {System.out.println("Exception :"+e);  } }
  Collections.sort(birthDates);

System.out.println(names+birthDates);
}}

我可以打印已排序的日期,但如何打印名称和日期。感谢

2 个答案:

答案 0 :(得分:4)

你可以这样做:

while (mat.find()) {
    System.out.println(mat.group());
}

<强>被修改

对不起,我没有注意到你的问题。要保存结果:

import java.util.*;

...

List<String> matches = new ArrayList<String>();
while (mat.find()) {
    matches.add(mat.group());
}

答案 1 :(得分:2)

您只需创建一个ArrayList并将其存储在那里。

List<String> birthDates = new ArrayList<String>();
Pattern datePattern = Pattern.compile("\\d\\d-\\d\\d-\\d\\d\\d\\d");
for(String name : names) {
    Matcher m = datePattern.matcher(name);
    while(m.find()) {
        birthDates.add(m.group());
    }
}

要记住的一件事是你计划对这些进行分类。您可以使用字符串比较器并使用Collections.sort(birthDates)。如果您需要Date对象,可以使用m.group()并将其解析为Date对象。然后,只需将ArrayList类型更改为ArrayList<Date>

编辑:如果你真的需要它成为一个数组,那么你可以使用.toArray(T[])界面中的List进行更改。

String[] birthDatesArray = birthDates.toArray(new String[birthDates.size()]);