Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数组列表中获取日期,然后按最快的Java排序_Java_String_Sorting_Date_Arraylist - Fatal编程技术网

从数组列表中获取日期,然后按最快的Java排序

从数组列表中获取日期,然后按最快的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

我试图从用户输入的数组列表中获取日期(dateTime),然后按最早的日期排序,我听说过java中的SimpleDataFormat实用程序/文本,但我不知道如何利用它。但我愿意使用任何你们能帮助我的方法,解释一下就好了

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());