Как удалить дубликаты из массива C #? - PullRequest
193 голосов
/ 13 августа 2008

Я работал с массивом string[] в C #, который возвращается из вызова функции. Я мог бы привести к Generic коллекции, но мне было интересно, есть ли лучший способ сделать это, возможно, с использованием временного массива.

Каков наилучший способ удаления дубликатов из массива C #?

Ответы [ 22 ]

0 голосов
/ 30 ноября 2017
  private static string[] distinct(string[] inputArray)
        {
            bool alreadyExists;
            string[] outputArray = new string[] {};

            for (int i = 0; i < inputArray.Length; i++)
            {
                alreadyExists = false;
                for (int j = 0; j < outputArray.Length; j++)
                {
                    if (inputArray[i] == outputArray[j])
                        alreadyExists = true;
                }
                        if (alreadyExists==false)
                        {
                            Array.Resize<string>(ref outputArray, outputArray.Length + 1);
                            outputArray[outputArray.Length-1] = inputArray[i];
                        }
            }
            return outputArray;
        }
0 голосов
/ 05 октября 2016

Ниже приведена простая логика в java, когда вы дважды просматриваете элементы массива, и если вы видите какой-либо элемент, вы присваиваете ему ноль плюс вы не касаетесь индекса элемента, который вы сравниваете.

import java.util.*;
class removeDuplicate{
int [] y ;

public removeDuplicate(int[] array){
    y=array;

    for(int b=0;b<y.length;b++){
        int temp = y[b];
        for(int v=0;v<y.length;v++){
            if( b!=v && temp==y[v]){
                y[v]=0;
            }
        }
    }
}
...