Java 试图在只出现一次的数组中显示整数

Java 试图在只出现一次的数组中显示整数,java,arrays,Java,Arrays,我创建了一个长度为25的数组,其中随机生成了1到25个数字。数组中几乎总是有重复的数字,我只想显示数组中只出现一次的数字。到目前为止,只要重复的数字只重复偶数次,我的代码似乎就能工作。我的问题是,我如何使这项工作,使我只得到数字,一旦发生添加到我的字符串 我不能使用hash或set之类的东西,这是赋值的一部分 int count2 = 0; for (int d = 0; d < copy.length-1; d++) { int num = copy[d]; if

我创建了一个长度为25的数组,其中随机生成了1到25个数字。数组中几乎总是有重复的数字,我只想显示数组中只出现一次的数字。到目前为止,只要重复的数字只重复偶数次,我的代码似乎就能工作。我的问题是,我如何使这项工作,使我只得到数字,一旦发生添加到我的字符串

我不能使用hash或set之类的东西,这是赋值的一部分

int count2 = 0;

for (int d = 0; d < copy.length-1; d++) 
{
    int num = copy[d];

    if (num != copy[d+1]) 
    {
        s = s + "," + num;
    } 
    else 
    {
        d++;
    }    
}
int count2=0;
对于(int d=0;d
使用

  • 构造两个新的哈希集,一个用于只出现一次的元素,另一个用于重复的元素
  • 遍历数组
  • 对于数组中的每个值,检查其是否已在重复项集中。如果是这样,则不做其他操作,继续下一次迭代
  • 检查该值是否已在仅出现一次的元素集中
  • 如果不是,请添加它。如果是,请将其删除并添加到副本列表中
  • 调用hashSet.toArray()之后,所有元素的数组只出现一次
  • 可以将数组转换为字符串,也可以随意使用

  • 这种方法非常有效,因为搜索、插入和删除都是散列集中的O(1)。

    我首先编写一个单独的方法来计算给定数组中某个值的出现次数,这样您就可以使用类似的方法计算每个
    值的出现次数

    然后你可以像这样利用它

    public static String toUniqueString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        for (int value : arr) {
            if (count(arr, value) == 1) {
                if (sb.length() != 0) {
                    sb.append(", ");
                }
                sb.append(value);
            }
        }
        return sb.toString();
    }
    
    最后,对其进行测试

    public static void main(String[] args) {
        Random rand = new Random();
        int[] arr = new int[25];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = rand.nextInt(arr.length) + 1;
        }
        System.out.println(toUniqueString(arr));
    }
    
    publicstaticvoidmain(字符串[]args){
    Random rand=新的Random();
    int[]arr=新int[25];
    对于(int i=0;i
    这只会找到两个连续的副本…如果副本发生在更远的地方怎么办…您对这些也感兴趣吗?您关心订单吗?如果没有,请先对数组排序,然后应用您的方法。(不要使用
    +
    字符串,请使用
    StringBuilder
    )我不确定你所说的值是什么意思。@johnodom请不要这样做,也不必编辑你喜欢的编码样式。啊,好吧,祝你好运:)
    public static void main(String[] args) {
        Random rand = new Random();
        int[] arr = new int[25];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = rand.nextInt(arr.length) + 1;
        }
        System.out.println(toUniqueString(arr));
    }