如何获取任意整数数组并返回具有相同整数但没有重复项的数组

时间:2019-04-28 00:14:25

标签: java arrays arraylist methods return-value

我需要编写一个java方法,它采用一个任意整数数组,并返回一个具有相同整数但无重复的数组。我必须在唯一方法内部创建数组吗?并且我还必须声明arr1,arr2和arr3吗?

public static int[] unique(){
        int [] arr1;
        int [] arr2;
        int [] arr3;

     for(int i= 0; i < arr1.length; i++) {

         }

    } 




    public static void main(String[] args) {
        int[] arr1 = {34, 34, 10, 50, 56, 34, 67, 34};
        int[] arr2 = {23, 100, 5, 56, 67, 10, 10, 10, 34, 67};
        int[] arr3 = {25, 25, 25, 25};

        System.out.println(Arrays.toString(unique(arr1)));
        1
        System.out.println(unique(arr1).length);
        System.out.println(Arrays.toString(unique(arr2)));
        System.out.println(unique(arr2).length);
        System.out.println(Arrays.toString(unique(arr3)));
        System.out.println(unique(arr3).length);
    }

}


2 个答案:

答案 0 :(得分:1)

首先,将所有值放入Set<Integer>中,默认情况下,该值不允许重复值,然后将Set<Integer>中的所有值添加到int[]中并返回它。

public static int[] unique(int[] values) {
   Set<Integer> uniqueValuesSet = new HashSet<>();
   for(Integer value : values) {
      uniqueValuesSet.add(value);
   }
   int i = 0;
   int[] uniqueValuesArray = new int[uniqueValuesSet.size()];
   for(Integer value : uniqueValuesSet) {
      uniqueValuesArray[i++] = value;
   }
   return uniqueValuesArray;
}

答案 1 :(得分:0)

从您的问题中我能理解的是:您想创建一个将数组作为参数的方法,并返回另一个不包含第一个数组重复值的方法。

所以直接想到的是使用Set(这是非duplicated值的集合)。

在这里,您可以通过手动检查Array值或使用set来解决问题:

public static int[] unique(int [] array){

   Set<Integer> set = new HashSet<>(Arrays.asList(array)); // create a set from your array
   // set now containing non duplicate value 
   return set.toArray(new int[set.size()]); // then convert your set to an array and return it.

}