【发布时间】:2021-10-14 06:54:57
【问题描述】:
我是 java 新手,所以我需要以下场景的帮助。
我有一个存储日期和其他信息的ArrayList,我想打印过去 3 天的日期应该在最前面的数组列表,其余的都在同一个列表之后。
任何帮助将不胜感激。
package learn.java.com;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class Person {
private String orderno;
private String itemno;
private Date orderdate;
public String getOrderno() {
return orderno;
}
public void setOrderno(String orderno) {
this.orderno = orderno;
}
public String getItemno() {
return itemno;
}
public void setItemno(String itemno) {
this.itemno = itemno;
}
public Date getOrderdate() {
return orderdate;
}
public void setOrderdate(Date orderdate) {
this.orderdate = orderdate;
}
public Person(String orderno, String itemno, Date orderdate) {
this.orderno = orderno;
this.itemno = itemno;
this.orderdate = orderdate;
}
public static void main(String[] args) throws ParseException {
ArrayList<Person> list = new ArrayList<>();
list.add(new Person("099909","BC101", new SimpleDateFormat("dd-MM-yyyy").parse("01-01-2010")));
list.add(new Person("989878","BC102", new SimpleDateFormat("dd-MM-yyyy").parse("02-01-1990")));
list.add(new Person("878788","BC103", new SimpleDateFormat("dd-MM-yyyy").parse("03-01-2000")));
list.add(new Person("099909","BC104", new SimpleDateFormat("dd-MM-yyyy").parse("04-01-2010")));
list.add(new Person("989878","BC105", new SimpleDateFormat("dd-MM-yyyy").parse("05-01-1990")));
list.add(new Person("878788","BC106", new SimpleDateFormat("dd-MM-yyyy").parse("06-01-2000")));
list.add(new Person("099909","BC107", new SimpleDateFormat("dd-MM-yyyy").parse("07-01-2010")));
list.add(new Person("989878","BC108", new SimpleDateFormat("dd-MM-yyyy").parse("08-01-1990")));
list.add(new Person("878788","BC109", new SimpleDateFormat("dd-MM-yyyy").parse("09-01-2000")));
System.out.println("Before Sort");
for (Person person : list) {
System.out.println(person.orderno + " " + person.getItemno()+ " " + person.getOrderdate());
}
}
}
“当前输出”
099909 BC101 Fri Jan 01 00:00:00 EST 2010
989878 BC102 Tue Jan 02 00:00:00 EST 1990
878788 BC103 Mon Jan 03 00:00:00 EST 2000
099909 BC104 Mon Jan 04 00:00:00 EST 2010
989878 BC105 Fri Jan 05 00:00:00 EST 1990
878788 BC106 Thu Jan 06 00:00:00 EST 2000
099909 BC107 Thu Jan 07 00:00:00 EST 2010
989878 BC108 Mon Jan 08 00:00:00 EST 1990
878788 BC109 Sun Jan 09 00:00:00 EST 2000
我想看到这样的输出
099909 BC107 Thu Jan 07 00:00:00 EST 2010
989878 BC108 Mon Jan 08 00:00:00 EST 1990
878788 BC109 Sun Jan 09 00:00:00 EST 2000
099909 BC101 Fri Jan 01 00:00:00 EST 2010
989878 BC102 Tue Jan 02 00:00:00 EST 1990
878788 BC103 Mon Jan 03 00:00:00 EST 2000
099909 BC104 Mon Jan 04 00:00:00 EST 2010
989878 BC105 Fri Jan 05 00:00:00 EST 1990
878788 BC106 Thu Jan 06 00:00:00 EST 2000
谢谢
【问题讨论】:
-
我们需要更多信息来帮助您,例如您的
ArrayList如何存储日期和“其他信息”。见How to ask -
哦请不要使用
SimpleDateFormat,它已经过时并被java.time.format.DateTimeFormatter取代。 -
我建议你不要使用
SimpleDateFormat和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。 -
类似(仅在接下来的 3 天):Sorting collection date field between two given dates
标签: java date sorting arraylist