Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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
如何使用MySQL数据库中的行在Java中创建队列?_Java_Mysql_Data Structures_Queue_Nodes - Fatal编程技术网

如何使用MySQL数据库中的行在Java中创建队列?

如何使用MySQL数据库中的行在Java中创建队列?,java,mysql,data-structures,queue,nodes,Java,Mysql,Data Structures,Queue,Nodes,我是Java和SQL数据库的初学者,希望得到一些帮助 我试图制作一个程序,从phpMyAdmin MySQL数据库表访问存储的数据。我已经知道如何选择了。该数据是一份药品清单,其中包含了有关药品的所有信息。列标题如下:名称、每周的日期、有效期、制造商等 但我想用表中的行创建队列抽象数据结构 我想为每一行创建节点。我首先必须创建一个类节点,因此对于第一行,它将使用该行每列的数据创建一个节点。然后我必须创建推拉方法。然而,我相信已经有一个Java库可以做到这一点了?如何创建此队列 队列将用于存储计时

我是Java和SQL数据库的初学者,希望得到一些帮助

我试图制作一个程序,从phpMyAdmin MySQL数据库表访问存储的数据。我已经知道如何选择了。该数据是一份药品清单,其中包含了有关药品的所有信息。列标题如下:名称、每周的日期、有效期、制造商等

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

我想为每一行创建节点。我首先必须创建一个类节点,因此对于第一行,它将使用该行每列的数据创建一个节点。然后我必须创建推拉方法。然而,我相信已经有一个Java库可以做到这一点了?如何创建此队列

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

星期一吃A药,星期二吃B药。队列应按一周中的天数顺序订购每种药物

请询问我没有提供的任何信息。谢谢

编辑

我应该说清楚: 天数存储为字符串: e、 g如果我需要在星期一服药,则字符串为:
1000000此7个字符字符串中的每个位置都对应于一周中的几天。所以如果我必须在周六和周日吃药:0000011。等等…

这里是可能的解决方案。我试着让它尽可能的通用。 我做了一些假设。。 我我没有设置数据库。我通过构造函数填充节点类对象。在本例中,通过数据库行创建节点类对象。数据库中的每一行对应于节点类的一个对象

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


        }

    }

为什么不在java的收集框架中使用可用队列?@eatSleepCode这是什么,你在说什么?我不知道Java收集框架是什么。你能解释一下吗?我希望你能从db order中选择一周中的第天要取的行。。如果不是,你是如何获得行的?@kaushik很抱歉,但我不知道如何按顺序选择行。你的意思是,我应该按照我想要的顺序从数据库中获取数据,而不是获取所有数据,然后将其整理好?我已经编辑了我的问题是的,有一个功能order by,用于获取按特定列排序的数据。举个例子,如果你有一个表名student。它有三列:学生id、学生姓名、学生城市。现在,如果您编写了一个查询,请按学生城市从学生订单中选择*。它将为您提供按学生所在城市排序的行。实例如果一名学生来自城市ABC bt,其id为10,另一名学生来自EFG,其id为1。在结果集上,具有城市id ABC的学生记录将排在第一位。