当前位置: 首页 > 知识库问答 >
问题:

在java中,如何在PriorityQueue中插入长数据类型

云胤
2023-03-14
class Solution{
    
    // temp: input array
    // n: size of array
    //Function to rearrange  the array elements alternately.
    public static void rearrange(long arr[], int n){
        
        PriorityQueue<Long>pq=new PriorityQueue<>();
        PriorityQueue<Long>pqrev=new PriorityQueue<Long>(Collections.reverseOrder());
        for(long i:arr){
            pq.offer(i);
            pqrev.offer(i);
        }
        int i=0;
        while(i<n && !pq.isEmpty() && !pqrev.isEmpty()){
            pq.remove(pqrev.peek());
            arr[i++]=pqrev.poll();
            
            pqrev.remove(pq.peek());
            arr[i++]=pq.poll();
            
        }
    }
    
}

我使用此代码将Long值存储在优先级队列中,但这是在线程mainjava.lang.NullPointerException at Solution.rearrange(File.java:71)at Main.main(File.java:35)中作为Exception输出

我已经将arr中的长值插入到PriorityQueues中,但仍然得到NullPointerException。

共有2个答案

包永新
2023-03-14

逻辑似乎有问题,而不是数据类型。您正在此处检查队列中是否有空队列

while(i<n && !pq.isEmpty() && !pqrev.isEmpty())

并在每个队列上使用两种方法(删除轮询),因此您基本上检查一次null并删除两次。
目前您只剩下一个元素,您将获得NullPointerException用于下一个操作。

沈俊美
2023-03-14

正如评论中所提到的,您有一个逻辑问题。在while循环中,您正在轮询队列中的数据,而不检查队列中是否有剩余值
由于没有轮询值,因此pq。轮询重新调整null,然后尝试删除导致空指针异常的null(不长)<在执行任何操作之前,请检查队列是否为空
例如:

if(pq.peek()!=null) {
  pqrev.remove(pq.peek());
  arr[i++]=pq.poll();
}

 类似资料:
  • 本文向大家介绍如何在MySQL ENUM数据类型中插入默认值?,包括了如何在MySQL ENUM数据类型中插入默认值?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助ENUM数据类型的DEFAULT属性来实现。如果未指定值,则DEFAULT属性会使ENUM数据类型具有默认值。换句话说,我们可以说INSERT语句不必为此字段包含值,因为如果不包含该值,那么将插入DEFAULT之后的值。DEFA

  • 我想发出一个将数据插入数据库的请求。该表有4列:ID_DOCUMENT(PK)、ID_TASK、DESCRIPTION、FILEPATH 当我运行我的测试时,我得到了这个错误:由:org.hibernate.hql.ast.querysyntaxException引起的:预期打开,在第1行第32列附近发现'c'[insert into TaskDocumentEntity c(c.IDTask,c

  • 我有两个表和一个表来映射我以前的两个表的关系,我如何使用Spring data JPA高效自动地将数据插入到映射的表中?下面是表结构。 用户(id(PK),名称,电子邮件,userRoleId)角色(id(PK),名称,userRoleId)用户角色(id(PK),userId(FK<-User),roleId(FK<-Role))

  • 注意:在MySQL表中,此列的数据类型我选择了日期数据类型 我只是有问题的日期部分查询插入日期:

  • 当前,我有一个数组,当通过print_r()输出时,该数组如下所示; 我想将此数据插入到一个表中,每个元素值都属于其各自的字段。 问候。

  • 问题内容: 我想使用Web服务在远程Web服务器上的MYSQL数据库中插入文件。 我的问题是:什么类型的表列(例如varchar等)将存储文件?对于文件,insert语句会有所不同吗? 问题答案: BLOB数据类型最适合存储文件。 请参阅:如何使用PHP将.pdf文件作为BLOB存储到MySQL中? MySQL BLOB参考手册有一些有趣的注释