Как взять произвольный целочисленный массив и вернуть массив с теми же целыми числами, но без дубликатов - PullRequest
1 голос
/ 28 апреля 2019

Мне нужно написать уникальный метод 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 ]

1 голос
/ 28 апреля 2019

Сначала поместите все значения в 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;
}
0 голосов
/ 28 апреля 2019

Из вашего вопроса я понимаю следующее: вы хотите создать метод, который принимает массив в качестве параметра и возвращает другой, не содержащий повторяющихся значений первого массива.

Итак, что приходит на ум, это использование Set (который представляет собой набор значений, отличных от duplicated).

Здесь вы можете решить свою проблему, проверяя значения Array вручную или используя набор:

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.

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...