从数组列表中获取日期,然后按最快的Java排序
我试图从用户输入的数组列表中获取日期(dateTime),然后按最早的日期排序,我听说过java中的SimpleDataFormat实用程序/文本,但我不知道如何利用它。但我愿意使用任何你们能帮助我的方法,解释一下就好了从数组列表中获取日期,然后按最快的Java排序,java,string,sorting,date,arraylist,Java,String,Sorting,Date,Arraylist,我试图从用户输入的数组列表中获取日期(dateTime),然后按最早的日期排序,我听说过java中的SimpleDataFormat实用程序/文本,但我不知道如何利用它。但我愿意使用任何你们能帮助我的方法,解释一下就好了 package ticketSystem; import java.util.ArrayList; import java.util.Scanner; public class Ticket extends User { Scanner sc = new Scan
package ticketSystem;
import java.util.ArrayList;
import java.util.Scanner;
public class Ticket extends User {
Scanner sc = new Scanner(System.in);
static ArrayList<Ticket> ticketList = new ArrayList<Ticket>();
String pri = "";
String des = "";
int rm = 0;
private String dateTime;
public Ticket(String userName) {
super(userName);
}
public String getDateTime() {
return dateTime;
}
public void menu2() {
typesOfTicks();
}
public void typesOfTicks() {
System.out.println("\nWhat type of ticket would you like to create?");
System.out.println("1: Room Ticket. ");
System.out.println("2: Common Area. ");
}
public void addTicket(Ticket ticket) {
ticketList.add(ticket);
}
public void createRoomTicket() {
System.out.println("You have created a new room ticket!");
System.out.println("Date for maintence: ");
dateTime = sc.nextLine();
System.out.println("What is the room number: ");
rm = Integer.parseInt(sc.nextLine());
System.out.println("What is its priority (1 being the lowest, and 5 the highest)?");
pri = sc.nextLine();
System.out.println("Description: ");
des = sc.nextLine();
Ticket ticket = new Ticket("Date for maintence(12/34/56): " + dateTime + "\nRoom Number: " + rm + "\nPriority: " + pri + "\nDecription: " + des + "\n");
addTicket(ticket);
}
public void createAreaTicket() {
String area = "";
System.out.println("Date for maintence: ");
dateTime = sc.nextLine();
System.out.println("What area is the ticket for? (N, S, W, E)");
boolean valid = false;
while (!valid) {
String s = sc.nextLine();
if (s.equals("N")) {
area = "North";
valid = true;
} else if (s.equals("S")) {
area = "South";
valid = true;
} else if (s.equals("W")) {
area = "West";
valid = true;
} else if (s.equals("E")) {
area = "East";
valid = true;
} else {
System.out.println("Not a valid Area. \nTry again: ");
}
}
System.out.println("What's the priority? ");
pri = sc.nextLine();
System.out.println("Description: ");
des = sc.nextLine();
Ticket ticket = new Ticket("Date for maintence: " + dateTime + "\nArea: " + area + "\nPriority: " + pri + "\nDecription: " + des + "\n");
addTicket(ticket);
}
public int getTicket() {
return ticketList.size();
}
void viewTicks() {
if (ticketList.size() <= 0) {
System.out.println("There are no tickets. ");
}
for (int i = 0; i < ticketList.size(); i++) {
System.out.println(ticketList.get(i));
}
}
}
打包票系统;
导入java.util.ArrayList;
导入java.util.Scanner;
公共类票证扩展用户{
扫描仪sc=新的扫描仪(System.in);
静态ArrayList ticketList=新建ArrayList();
字符串pri=“”;
字符串des=“”;
int rm=0;
私有字符串日期时间;
公共票证(字符串用户名){
超级(用户名);
}
公共字符串getDateTime(){
返回日期时间;
}
公共无效菜单2(){
typesOfTicks();
}
公共void typesOfTicks(){
System.out.println(“\n要创建哪种类型的票证?”);
System.out.println(“1:房间票”);
System.out.println(“2:公共区域”);
}
公众票(票){
ticketList.add(票据);
}
公众票(){
System.out.println(“您已经创建了一张新的房间票!”);
System.out.println(“维护日期:”);
dateTime=sc.nextLine();
System.out.println(“房间号:”);
rm=Integer.parseInt(sc.nextLine());
System.out.println(“它的优先级是什么(1是最低的,5是最高的)?”;
pri=sc.nextLine();
System.out.println(“说明:”);
des=sc.nextLine();
票证=新票证(“维修日期(12/34/56):“+dateTime+”\n房间号:“+rm+”\n优先级:“+pri+”\n说明:“+des+”\n”);
补票;
}
公共票据(){
字符串区域=”;
System.out.println(“维护日期:”);
dateTime=sc.nextLine();
System.out.println(“车票是针对哪个区域的?(N、S、W、E)”);
布尔有效=假;
while(!valid){
字符串s=sc.nextLine();
如果(s等于(“N”)){
区域=“北”;
有效=真;
}否则,如果(s等于(“s”)){
地区=“南部”;
有效=真;
}如果(s等于(“W”)){
地区=“西部”;
有效=真;
}否则,如果(s.等于(“E”)){
区域=“东”;
有效=真;
}否则{
System.out.println(“不是有效区域。\n请重试:”;
}
}
System.out.println(“优先级是什么?”);
pri=sc.nextLine();
System.out.println(“说明:”);
des=sc.nextLine();
票证=新票证(“维护日期:“+dateTime+”\n区域:“+area+”\n优先级:“+pri+”\n说明:“+des+”\n”);
补票;
}
public int getTicket(){
返回ticketList.size();
}
void viewTicks(){
如果(ticketList.size()您有几个选项,但我会给您两个。在这两种情况下,我都会使用日期
(或类似)对象来表示日期,而不是字符串
制作Ticket
实现接口并使用
通过实现调用您的列表
选项1:
package ticketsystem;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Ticket implements Comparable<Ticket> {
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
private Date date;
public Ticket(String d) throws ParseException {
date = DATE_FORMAT.parse(d);
}
public Date getDate() {
return date;
}
public String getDateString() {
return DATE_FORMAT.format(date);
}
@Override
public int compareTo(Ticket t) {
// Compare the parameter t's Date to this instances Date (reversed to order by soonest first).
return t.date.compareTo(date);
}
}
package ticketsystem;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Example {
public static void main(String[] args) throws ParseException {
List<Ticket> tickets = new ArrayList<>();
tickets.add(new Ticket("1900-05-06"));
tickets.add(new Ticket("2016-11-02"));
tickets.add(new Ticket("1976-12-01"));
Collections.sort(tickets, new Comparator<Ticket>() {
@Override
public int compare(Ticket t1, Ticket t2) {
return t2.getDate().compareTo(t1.getDate());
}
});
for (Ticket t : tickets) {
System.out.println(t.getDateString());
}
}
}
使票证
实现可比较
,这将允许通过调用集合对列表
进行排序。排序(nameOfYourList)
选项1的示例Ticket
class:
package ticketsystem;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Ticket implements Comparable<Ticket> {
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
private Date date;
public Ticket(String d) throws ParseException {
date = DATE_FORMAT.parse(d);
}
public Date getDate() {
return date;
}
public String getDateString() {
return DATE_FORMAT.format(date);
}
@Override
public int compareTo(Ticket t) {
// Compare the parameter t's Date to this instances Date (reversed to order by soonest first).
return t.date.compareTo(date);
}
}
package ticketsystem;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Example {
public static void main(String[] args) throws ParseException {
List<Ticket> tickets = new ArrayList<>();
tickets.add(new Ticket("1900-05-06"));
tickets.add(new Ticket("2016-11-02"));
tickets.add(new Ticket("1976-12-01"));
Collections.sort(tickets, new Comparator<Ticket>() {
@Override
public int compare(Ticket t1, Ticket t2) {
return t2.getDate().compareTo(t1.getDate());
}
});
for (Ticket t : tickets) {
System.out.println(t.getDateString());
}
}
}
选项2的示例用法:
package ticketsystem;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Ticket implements Comparable<Ticket> {
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
private Date date;
public Ticket(String d) throws ParseException {
date = DATE_FORMAT.parse(d);
}
public Date getDate() {
return date;
}
public String getDateString() {
return DATE_FORMAT.format(date);
}
@Override
public int compareTo(Ticket t) {
// Compare the parameter t's Date to this instances Date (reversed to order by soonest first).
return t.date.compareTo(date);
}
}
package ticketsystem;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Example {
public static void main(String[] args) throws ParseException {
List<Ticket> tickets = new ArrayList<>();
tickets.add(new Ticket("1900-05-06"));
tickets.add(new Ticket("2016-11-02"));
tickets.add(new Ticket("1976-12-01"));
Collections.sort(tickets, new Comparator<Ticket>() {
@Override
public int compare(Ticket t1, Ticket t2) {
return t2.getDate().compareTo(t1.getDate());
}
});
for (Ticket t : tickets) {
System.out.println(t.getDateString());
}
}
}
打包票系统;
导入java.text.ParseException;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
公开课范例{
公共静态void main(字符串[]args)引发异常{
列表票证=新的ArrayList();
门票。添加(新门票(“1900-05-06”);
门票。添加(新门票(“2016-11-02”);
增加(新票(“1976-12-01”);
Collections.sort(票据,新比较器(){
@凌驾
公共整数比较(票t1、票t2){
返回t2.getDate().compareTo(t1.getDate());
}
});
车票(t:车票){
System.out.println(t.getDateString());
}
}
}
如何根据最早的日期(dateTime)对arrayList(userList)的所有内容进行排序userList.sort(Comparator.comparing(User::getDateTime).reversed());
如果我"我很麻烦,但是我该如何打印出来呢?请在发布之前搜索堆栈溢出。您的问题已经被讨论过很多次了。我从用户输入中获取日期,那么我该如何设置它以获取这些日期呢?@Ricardo96MC您只需确保用户以所需的格式输入,例如yyyy MM dd在本例中,如果d传递然后传递该字符串。例如,使用Scanner sc=new Scanner(System.in)
,它将是Ticket t=new Ticket(sc.next());