这就是我所拥有的。我扫描txt并将其作为字符串传递给数组(每行)。我需要按日期排序
package stocktest;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
/**
*/
public class StockTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ArrayList aList = new ArrayList();
java.io.File file = new java.io.File("transactions.txt");
try {
Scanner input = new Scanner(file);
while (input.hasNext()) {
String data = input.nextLine();
aList.add(data);
System.out.println(aList);
}
} catch (FileNotFoundException e) {
System.err.format("File does not exist/n");
}
}
}
transaction.txt中的每一行都是这样的
买的,1/2/2002年,IBM,30,135.00
我需要按日期对列表进行排序。 你觉得我应该怎么做? 提前致谢。
答案 0 :(得分:0)
首先,为什么不尝试用","来解析每一行?并将它放到一个具有状态和方法的类中,你可以使用比较器对数组列表进行排序,参见我的例子。
private List<OrderDTO> orderDTOs;
public class OrderDtoDateDescComparator implements Comparator<OrderDTO> {
@Override
public int compare(OrderDTO orderDTO, OrderDTO other) {
if (orderDTO.getDateCreated() != null && other.getDateCreated() != null) {
return orderDTO.getDateCreated().compareTo(other.getDateCreated());
} else if (orderDTO.getDateCreated() != null && other.getDateCreated() == null) {
return 1;
} else if (orderDTO.getDateCreated() == null && other.getDateCreated() != null) {
return -1;
}
return 0;
}
}
Collections.sort(this.orderDTOs, new OrderDtoDateDescComparator());
现在看,这很容易。原样。
答案 1 :(得分:0)
这是比较器的一个很酷的用例。
Collections.sort(aList, new Comparator<String>() {
public int compare(String s1, String s2) {
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yy");
try {
Date d1 = format.parse(s1.split(",")[1]);
Date d2 = format.parse(s2.split(",")[1]);
return d1.compareTo(d2);
} catch (ParseException e) {
// handle exception
}
}
});