在java中从数组中删除元素

在java中从数组中删除元素,java,Java,我有一个数组,我正在用它实现一个优先级队列。现在,我不移动元素(因为只有前面的指针必须移动) 我尝试将null添加到该数组位置,但它不起作用,因为我使用了Arrays.sort(arr)方法,如果我确实将该位置设置为null,它会给出NullPointerException 下面是我的代码的外观: public static void remove() { //Priorityy x = arr[front]; arr[front] = null; front--;

我有一个数组,我正在用它实现一个优先级队列。现在,我不移动元素(因为只有前面的指针必须移动)

我尝试将null添加到该数组位置,但它不起作用,因为我使用了
Arrays.sort(arr)
方法,如果我确实将该位置设置为null,它会给出NullPointerException

下面是我的代码的外观:

public static void remove() {
    //Priorityy x = arr[front];
    arr[front] = null;
    front--;
    //return x;
}

public int compareTo(Priorityy pe) {
    if (this == null || pe == null)
        return 0;
    else {

        if (this.key < pe.key) {
            return 1;
        } else if (this.key > pe.key) {
            return -1;
        } else {
            return 0;
        }
    }
}
publicstaticvoidremove(){
//优先级x=arr[前];
arr[front]=null;
前面--;
//返回x;
}
公共国际比较(优先pe){
if(this==null | | pe==null)
返回0;
否则{
如果(此键pe.key){
返回-1;
}否则{
返回0;
}
}
}
哪里出错了?

用于获取没有第一个元素(前面)的数组,如下所示:

arr = Arrays.copyOfRange(1, arr.length);

如果要删除元素,则不要使用数组。这是完全错误的数据结构。您正在寻找一个@BoristheSpider:我明白,但我想实现一个基于数组的优先级队列,就像我用数组实现堆栈和其他类型的队列一样。我也删除了那里的元素,但是因为那里没有使用compareTo,所以这不是一个问题。这只是为了理解概念,并不是说我在现实世界的应用程序中实现它,而是试图找出是否存在可能的方法。在这种情况下,您的方法是错误的。删除一个元素只需对所有内容进行筛选,然后在末尾添加另一个
null
。这需要
O(n)
时间(类似于插入排序单次迭代)。使用
array.sort
肯定是不对的。如果你想从数组中删除某个条目,我建议你为它实现
equals()
hashcode()
。@Boristeider:移动元素也会让我移动后指针,但根据这本书,“Samn教你自己的数据结构,后面的指针应该始终保持在底部,不移动。这正是我想要的:D,非常感谢:)