【问题标题】:How to make a queue in Java using rows from a MySQL database? [closed]如何使用 MySQL 数据库中的行在 Java 中创建队列? [关闭]
【发布时间】:2016-07-07 07:58:38
【问题描述】:

我是 Java 和 SQL 数据库的初学者,需要一些帮助。

我正在尝试制作一个程序,该程序可以从 phpMyAdmin (MySQL) 数据库表中访问存储的数据。我已经知道如何SELECT。数据是包含所有信息的药物列表。列标题如下:名称、day_of_week_to_take、到期、制造商等。

但我想用表的行创建队列抽象数据结构。

我想为每一行创建Nodes。我首先必须创建一个class Node,因此对于第一行,它将使用该行每一列的数据创建一个Node。然后我将不得不创建pushpull 方法。 (不过,我相信已经有一个 Java 库可以做到这一点?)我怎样才能创建这个队列?

队列将用于存储计时的顺序。每个Node 对象在发生时都有自己的星期几。

例如周一吃药A,周二吃药B。队列应按星期几顺序订购每种药物。

请询问我未提供的任何信息。谢谢!

编辑

我应该清楚这一点: 日期存储为String: 例如,如果我需要在星期一服药,则字符串是: 1000000。这 7 个字符串中的每个位置对应于星期几。所以如果我必须在周六和周日吃药:0000011。等等……

【问题讨论】:

  • 为什么不在 java 的 Collection 框架中使用可用的队列?
  • @eatSleepCode 那是什么,你在说什么?我不知道什么是“Java 集合框架”。请你解释一下?
  • 我希望您可以按 day_of_week_to_take 从 db order 中选择行。如果不是,您如何获取行?
  • @kaushik 很抱歉,但我不知道如何按顺序选择行。所以你是说我应该按照我想要的顺序从数据库中获取它,而不是获取所有数据然后按顺序排列吗?我已经编辑了我的问题
  • 是的,有一个按 的功能顺序来获取按特定列排序的数据。只是一个例子,如果你有一个表名学生。它有三列 student_id、student_name、student_city。现在,如果你写了一个查询 select * from student order by student_city。它将为您提供按 student_city 排序的行。例子。如果一个学生来自城市 ABC,他的 id 是 10,另一个学生来自 EFG,他的 id 是 1。在结果集中,城市 id 为 ABC 的学生记录将排在第一位。

标签: java mysql data-structures queue nodes


【解决方案1】:

这是可能的解决方案。我试图使其尽可能通用。 我做了一些假设.. 一世。我没有设置数据库。我通过构造函数填充了 Node 类对象。在您的情况下,您通过数据库行创建 Node 类对象。数据库中的每一行对应一个 Node 类的对象。

public class Node {

    private String mediName;
    private String dayOfWeek;
    private String expiry;
    private String manufacturer;


    public Node(String mediName,String dayOfWeek,String expiry,String manufacturer)
    {
        this.mediName=mediName;
        this.dayOfWeek=dayOfWeek;
        this.expiry=expiry;
        this.manufacturer=manufacturer;
    }


    public String getMediName() {
        return mediName;
    }
    public void setMediName(String mediName) {
        this.mediName = mediName;
    }
    public String getDayOfWeek() {
        return dayOfWeek;
    }
    public void setDayOfWeek(String dayOfWeek) {
        this.dayOfWeek = dayOfWeek;
    }
    public String getExpiry() {
        return expiry;
    }
    public void setExpiry(String expiry) {
        this.expiry = expiry;
    }
    public String getManufacturer() {
        return manufacturer;
    }
    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }


}

下面的类被设计为一个队列数据结构。

public class QueueNode {

    private int front=-1;
    private int rear=-1;
    private int capacity;
    private Node[] arr;

    public QueueNode(int capacity)
    {
        this.capacity=capacity;
        arr=new Node[capacity];
    }

    private boolean isEmpty()
    {
        return front==-1;
    }

    private boolean isFull()
    {
        return (rear+1)%capacity==front;
    }

    public void push(Node data) throws Exception
    {
        if(isFull())
            throw new Exception("Queue is Full");
        else
        {
            rear=(rear+1)%capacity;
            arr[rear]=data;
            if(front==-1)
                front=rear;
        }

    }

    public Node pull() throws Exception
    {
        Node data=null;
        if(isEmpty())
        {
            throw new Exception("Queue is Empty");
        }else
        {
            data=arr[front];
            if(front==rear)
                front=rear-1;
            else
            {
                front=(front+1)%capacity;
            }
        }

        return data;
    }
}

下面这个类的作用是测试Node和QueueNode类..

public class MainClassForQueue {

        public static void main(String[] args) throws Exception {

            Node n1=new Node("A","1000000","2017-02-16","ABC");
            Node n2=new Node("B","1100000","2017-02-16","ABC");
            Node n3=new Node("C","0100000","2017-02-16","ABC");
            Node n4=new Node("D","0010000","2017-02-16","ABC");
            Node n5=new Node("F","1010000","2017-02-16","ABC");
            Node n6=new Node("G","0000001","2017-02-16","ABC");
            Node n7=new Node("H","0000011","2017-02-16","ABC");
            Node n8=new Node("I","0001000","2017-02-16","ABC");
            Node n9=new Node("J","0000100","2017-02-16","ABC");
            Node n10=new Node("K","0000010","2017-02-16","ABC");
            Node n11=new Node("L","1010101","2017-02-16","ABC");
            Node n12=new Node("M","1001011","2017-02-16","ABC");
            Node n13=new Node("N","1111111","2017-02-16","ABC");

            List<Node> listNode=new ArrayList<Node>();
            listNode.add(n1);
            listNode.add(n2);
            listNode.add(n3);
            listNode.add(n4);
            listNode.add(n5);
            listNode.add(n6);
            listNode.add(n7);
            listNode.add(n8);
            listNode.add(n9);
            listNode.add(n10);
            listNode.add(n11);
            listNode.add(n12);
            listNode.add(n13);

            int size=listNode.size();
            QueueNode queue=new QueueNode(7*size);

            for(int j=0;j<7;j++)
            {
                for (int i = 0; i < listNode.size(); i++) {

                    Node data=listNode.get(i);
                    String day=data.getDayOfWeek();
                    if(day.charAt(j)=='1')
                        queue.push(data);
                }

            }

            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());
            System.out.println(queue.pull().getMediName());


        }

    }

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2013-10-01
    相关资源
    最近更新 更多