gpt4 book ai didi

java - 在 Java 1.7 中连同元素一起从数组中删除重复元素

转载 作者:行者123 更新时间:2023-11-29 07:30:54 25 4
gpt4 key购买 nike

我需要编写一个方法,其中 int[] 将作为输入提供,它应该返回一个数组,但所有出现次数超过 n 次的数字都被完全删除。

Inputs:
(int list) data = [1, 2, 2, 3, 3, 3, 4, 5, 5]

Output:
(int list) [1, 4]

这些是我试过的步骤。

  1. 将 int 数组复制到 ArrayList (inputList)。
  2. 创建一个 LinkedHashset 以查找唯一值
  3. 迭代LH,用iterator找到ArrayList的集合频率。

    int[] intArray = new int[0];

    if(n!=0){
    if(data.length<100){

    ArrayList<Integer> inputList = new ArrayList<Integer>(data.length);
    //System.out.println(Arrays.toString(data));
    for (int i = 0; i < data.length; i++){
    inputList.add(Integer.valueOf(data[i]));
    }

    LinkedHashSet<Integer> lhs = new LinkedHashSet<>(inputList);

    intArray = new int[lhs.size()];
    int i=0;
    int j=0;
    Iterator<Integer> itr = lhs.iterator();
    while(itr.hasNext()){
    Integer shiftNumber = itr.next();

    if(Collections.frequency(inputList, shiftNumber)==1) {
    intArray[i++] = shiftNumber.intValue();
    j++;
    }


    }
    intArray = Arrays.copyOf(intArray, j);
    return intArray;
    }
    }

    return intArray;

我能够通过上面的代码片段获得结果。但是,我需要通过使用任何算法或其他集合对象来减少代码片段和提高性能的建议。

最佳答案

您可以改用 map 。

映射键代表在数组中找到的值; map 值将是一个计数器。

你迭代你的数组,并为每个元素放置一个 counter=1(当第一次找到该值时);或者你只是增加那个计数器。

最后,您只收集那些计数器值为 1 的 map 键。

关于java - 在 Java 1.7 中连同元素一起从数组中删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42842445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com