none
Eliminar datos de un array, contenidos en un arrayList RRS feed

  • Pregunta

  • Buenas tardes.

    Tengo este array y este arrayList:

    public static string[] miArray = new string [10] {"1,2,3","4,5,6","7,8,9"...}

    ArrayList miArrayList = new ArrayList();

    miArray tiene un tamaño superior al del miArrayList, y el contenido de miArrayList es del tipo {"1,2,3","4,5,6"....}

    En miArray, quiero eliminar las cadenas que estén en miArrayList.

    He probado miArrayList.ToArray() y he probado con Contains...

    Alguna sugerencia para eliminar el contenido de miArray que esté en miArrayList.?

    ¿Es posible pasar miArray a un miArrayList y desde alli hacer un Remove?

    Gracias.Saludos.

    miércoles, 21 de octubre de 2020 21:38

Todas las respuestas

  • Hola Georgina

    Me puse a googlear ArrayList porque me parecía que es del año del cohete espacial ... y tenía razón! En la página decía: "Recomendamos que en su lugar use List<T>" (donde T es cualquier tipo).

    miArray es una matriz o vector que tiene tamaño fijo, y no necesitas poner el número, lo calcula solo. No se puede eliminar elementos, sólo podrías reasignar todo de nuevo (incluso con diferente cantidad).

    Podes crear un List<> a partir del array.

    List<string> lista = new List<string>(miArray);

    Y ahí podes usar Contains(), y eliminar lo que esté en miArrayList, y luego reasignar miArray con lo que quede de lista. Quizás si supiera el objetivo de esto, posiblemente te podría ayudar mejor.

    foreach (string str in miArrayList)
    {
        if (lista.Contains(str))
            lista.Remove(str);
    }
    miArray = lista.ToArray();

    Saludos

    Pablo

    miércoles, 21 de octubre de 2020 22:49
  • Hola GeorginaRomero,

    ¿Alguna novedad sobre tu pregunta? ¿Han sido útiles las respuestas proporcionadas? Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice "Marcar como respuesta").

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    jueves, 22 de octubre de 2020 2:47
    Moderador
  • Puedes usar operaciones de colección para convertir tu arraylist a un arreglo y utilizar except para encontrar los no comunes.

    miArray=miArray.Except(miArrayList.ToArray(typeof(string)) as string[]).ToArray();

    jueves, 22 de octubre de 2020 3:25
  • Una aclaración. ArrayList es perfectamente valido y no siempre puede ser sustituido por List<T> justamente Arraylist existe para colecciones que pueden contener objetos de distintos tipos.  En este caso en prticular si podría ser sustituido por List<string>.
    jueves, 22 de octubre de 2020 3:28
  • Gracias a Tigre Pablito y a Anibal Marcano por responder, y disculpar el tiempo en contestar.

    Es exactamente lo que quería.

    Ambos códigos, comprobados detalladamente, hacen exactamente lo mismo y son prácticmente igual de rápidos.

    Puede cerrarse el hilo.

    Saludos.

    sábado, 24 de octubre de 2020 21:18