Título: Eliminar elementos repetidos en un Array Publicado por: okik en 22 Junio 2015, 18:23 pm buenas..
¿Hay alguna forma de eliminar elementos repetidos en un Array? Me he hecho una función, que me ha costado, el ingeniarlo quiero decir, que es la siguiente: Código
Lo que hace es comprobar uno por uno los elementos del strArray1 y si no está repetido lo pasa al strArray2, hasta completar una lista sin repeticiones. Una vez el strArray2 está completo lo pasa a la función DeleteArrayRepetitions que también es un Array. Es decir, la función devuelve una lista sin repeticiones. En un intento de reducirlo más, resulta que obtengo un código más o menos igual solo que esta vez usando Array.LastIndexOf en lugar de Array.IndexOf Código
Para usarlo se hace los siguiente: Código
El ListBox mostrará: 1 12 4 5 55 A pesar que las funciones funcionan bien, debe haber alguna forma más sencilla, alguna función en VBNET que permita hacerlo. He probado con Array y ArrayList, pero no he visto nada. Sl2 Título: Re: Eliminar elementos repetidos en un Array Publicado por: El Benjo en 22 Junio 2015, 21:55 pm Realmente no hay una funcion en .net que te devuelva un array sin elementos repetidos. Todos en alguna ocasión nos hemos encontrado con este problema y debemos implementar nuestras propias funciones para lidiar con él. De hecho la forma en que lo estás haciendo parece sigue el modelo que se utiliza para ello:
· Primer bucle que recorre el array en su totalidad. · Segundo bucle que recorre el array después de la posición del bucle 1. · Si el elemento no está repetido: · Lo agrego al segundo array. · Fin · Next · Next Título: Re: Eliminar elementos repetidos en un Array Publicado por: Eleкtro en 23 Junio 2015, 03:16 am Citar ¿Hay alguna forma de eliminar elementos repetidos en un Array? Realmente no hay una funcion en .net que te devuelva un array sin elementos repetidos. Por supuesto que hay una función en la librería de classes de .Net para eliminar duplicados de un Array / Enumerable, usando LINQ: ➢ IEnumerable.Distinct - MSDN (https://msdn.microsoft.com/en-us/library/vstudio/bb348436%28v=vs.100%29.aspx) Citar Returns distinct elements from a sequence by using the default equality comparer to compare values. Ejemplo: Código
El argumento que le asigno al parámetro de la extensión Distinct en este caso es innecesario, puedes dejarlo vacío, pero te he mostrado ese overload para denotar que puedes implementar un comparer personalizado y pasárselo cómo parámetro, aunque esto ya requeriría más trabajo. He probado con Array y ArrayList, pero no he visto nada. La Class Array y ArrayList debes tratar de ignorarlas y omitir su utilización por completo, hay opciones mejores, te sugiero utilizar una coleccion genérica de tipo List(Of T), la cual puedes utilizar el método List.Add y List.AddRange para añadir nuevos elementos a la colección y de esta manera incrementar dinamicamente la colección, en lugar de ir redimensionando un objeto de tipo Array de forma primitiva. Ejemplo: Código
Saludos! |