我需要编写一个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);
}
}
答案 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.
}