删除数组中的重复元素

时间:2015-02-09 18:40:34

标签: java arrays duplicates elements

public void noDups() {
    int rem = nElems;
    for (int t = 0; t < nElems; t++) {
        for (int t2 = 1; t2 < rem; t2++) {
            long mydup = a[t];
            long mydup2 = a[t+1];
            if (mydup == mydup2) {
                delete(mydup);
            }
        }
        rem--;
    }
}
public void delete(long value)
{
    int j;
    for(j=0; j<nElems; j++)        // look for it
        if( value == a[j] )
            break;
    else                           // found it
    {
        for(int k=j; k<nElems; k++) // move higher ones down
            a[k] = a[k+1];
        nElems--;                   // decrement size
        //return true;
    }

如何添加名为noDups()的方法 从先前排序的数组中删除重复项而不中断顺序。 注意:假设数组中只有一个值可以有重复项。例如,在 {1,3,4,4,4,4,5,7,9}只有4个重复。

2 个答案:

答案 0 :(得分:0)

我注意到了一些事情:

- for下有两个noDups循环,但未使用变量t2

- 您重新定位数组中的所有项目,但数组的长度相同。

- 如果没有运行代码,我猜您在Array Index out of range的{​​{1}}部分k+1else而发现delete错误

答案 1 :(得分:-1)

您可以尝试使用ArrayList为您的解决方案......

请参阅:

//for initialize
    List<Long> list = new ArrayList<Long>();

    //for add a new number
    list.add(10l);

    //for remove
    list.remove(10l);

    //for verify if exists
    list.contains(10l);