Comment des données d'union dans ArrayList C# dans un cadre dotnet 2?Comment des données d'union dans ArrayList C# 2.0?
example of data : 1, 2, 2, 3, 4, 5, 5, 6, 6
how to get 1, 2, 3, 4, 5, 6
Comment des données d'union dans ArrayList C# dans un cadre dotnet 2?Comment des données d'union dans ArrayList C# 2.0?
example of data : 1, 2, 2, 3, 4, 5, 5, 6, 6
how to get 1, 2, 3, 4, 5, 6
// Assuming your data is an ArrayList called "source"
ArrayList dest = new ArrayList();
foreach(int i in source) if(!dest.Contains(i)) dest.Add(i);
Vous devez utiliser la liste <int> au lieu de ArrayList, cependant.
Edit: Autre solution à l'aide Trier + BinarySearch, comme suggéré par Kobi:
// Assuming your data is an ArrayList called "source"
source.Sort();
ArrayList dest = new ArrayList();
foreach (int i in source) if (dest.BinarySearch(i)<0) dest.Add(i);
Hashtable htCopy = new Hashtable();
foreach (int item in arrListFull)
{
htCopy[item] = null;
}
ArrayList distinctArrayList = new ArrayList(htCopy.Keys);
Cela se sent sale et hacky, mhmm, comme moi! – arul
public ArrayList RemoveDups (ArrayList input)
{
ArrayList single_values = new ArrayList();
foreach(object item in input)
{
if(!single_values.Contains(item))
{
single_values.Add(item);
}
}
return single_values;
}
@Badaro, Il n'y a pas de "jolie Linq" dans cette réponse. – Ash
@Ash Vérifiez l'historique, l'auteur a supprimé la partie Linq (c'est pourquoi j'ai également supprimé mon commentaire). Il l'a probablement fait parce que la question disait C# 2.0, mais je pense qu'il aurait dû garder les deux exemples. – Badaro
La suggestion de phoenix est plus rapide –
Il vaudrait mieux utiliser 'Sort' et' BinarySearch', des méthodes déjà présentes dans ArrayList. – Kobi
ArsenMkrt: l'avez-vous profilé? Cela dépend vraiment de l'ensemble de données en entrée, mais l'instanciation d'une table de hachage et la copie des données dans une nouvelle arborescence est un processus assez coûteux. – arul