Подсчет количества уникальных чисел в массиве int

Попытка получить число уникальных (не дублированных) номеров массива статическим методом. Например, массив {1,1,2,4,5,5,7,78,89} будет равен 7.

public class UniqueNumbes {
    public static void main(String[] args) {
        int[] test = {1, 2, 4, 5, 10, 30, 20, 1};
        int num = numUnique(test);
        System.out.println(num);
    }
    public static int numUnique(int[] list){
        int count= 0;
        int fin =list.length;
        Arrays.sort(list);
        for (int i = 0; i<=list.length; i++){
            if(list[i]==list[i-1]) 
                count++;
            }
            return fin-count;
    }
}

1 ответ

Положите все в набор и верните размер набора.

import java.util.HashSet;
import java.util.Set;

public class UniqueNumbes {

    public static void main(String[] args) {
        int[] test = { 1, 2, 4, 5, 10, 30, 20, 1 };
        int num = numUnique(test);
        System.out.println(num);
    }

    public static int numUnique(int[] list) {
        // java.util.Set
        // "A collection that contains no duplicate elements." 
        Set<Integer> set = new HashSet<Integer>();
        for (int i = 0; i < list.length; i++) {
            set.add(list[i]);
        }
        return set.size();

    }
}
Другие вопросы по тегам