//用优先队列比较大小,用尾插法将较小的节点进行连接。

public ListNode mergeKLists(ArrayList<ListNode> lists) {
        if(lists==null) return null;
        //重写比较器
        PriorityQueue<ListNode> priorityQueue=new PriorityQueue<>(new Comparator<ListNode>() {
            @Override
            public int compare(ListNode o1, ListNode o2) {
                return o1.val-o2.val;
            }
        });
        for (ListNode listNode:lists){
            //对于空节点 需要进行过滤掉
            if (listNode==null) continue;
            priorityQueue.add(listNode);
        }
        ListNode pre = new ListNode(0);
        ListNode res = pre;
        while (priorityQueue.size()>0){
            ListNode ln=priorityQueue.poll();
            pre.next = ln;
            pre=ln;
            if (ln.next!=null) {
                //将弹出节点的下一个节点加入到队列中进行比较
                priorityQueue.add(ln.next);
            }
        }
        return res.next;
    }