Soy nuevo en java, y estoy confundida con el problema.
Esto es lo que se me ocurrió hasta ahora.
Todavía estoy trabajando en ello, si yo vengo con ningún progreso, voy a publicar aquí.

public class charArray {

public static void main(String[] args) {

    String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};
    //output should be ["apple", "ball"]

    checkDuplicate(strArray);
}
public static String[] checkDuplicate(String[] strArray){
    String[] newArray = new String[]{};
    for(int i = 0; i < strArray.length; i++){

        for(int j = 0; j < i; j++){
            if (strArray[i].equals(srtArray[j])){
                newArray = strArray[i];
            }
        }

    }
    return newArray[];

}

}


Nuevo progreso:
Ok, mi mediocre cabeza se ha ido tan lejos: (y la solución funciona)
Imprime la única matriz de elementos Duplicados.
Pero ahora tengo que aplicar el mismo código, llamando a un método.
Cualquier ayuda es muy apreciada.

import java.util.*;

public class setChar {

public static void main(String[] args) {
    String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};
    Set set = new HashSet();
    Set uniqueSet = new HashSet();
    for(int i = 0; i < strArray.length ; i++ ){
        boolean b = set.add(strArray[i]);
        if(b == false){
            uniqueSet.add(strArray[i]);
        }
    }
    Iterator it = uniqueSet.iterator();
    while (it.hasNext()){
        System.out.println(it.next());
    }
}

}

La salida es:
bola
apple


Finalmente se implementó con el método, con un tipo de retorno.
Por favor, hágamelo saber si esto puede ser aún más optimizada.
Gracias a todos por las sugerencias. Aquí está el código de trabajo:

public class retUnique {

public static void main(String[] args) {
    String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};

    System.out.println(printUnique(strArray));
}

public static Set<String> printUnique(String[] strArray){
    Set<String> set = new HashSet<String>();
    Set<String> uniqueSet = new HashSet<String>();
    for(int i = 0; i < strArray.length ; i++ ){
        boolean b = set.add(strArray[i]);
        if(b == false){
            uniqueSet.add(strArray[i]);
        }
    }
    return(uniqueSet);
}

}
  • Podría intentar con un LinkedHashSet (creo que es?) que sólo permite entradas únicas, incluso cuando usted agrega varias entradas que están a la misma.
  • lo que usted desea ro de retorno, las únicas palabras, o ghe dupplicates?
  • AlexWien – tengo que volver a las palabras de sólo las palabras duplicadas.
  • Este puede haber sido contestada ya están aquí, stackoverflow.com/questions/13337296/…
  • Gracias por el enlace que Lee. Pero el problema no es la misma. En el enlace que has publicado, los únicos elementos de la lista se clasifican. Pero en la mía, necesito una única lista de elementos, que están Duplicados. No todos los elementos en la lista. Bueno, yo tengo una solución publicado, por favor, a ver si eso puede ser optimizado, e implementado en un método.
InformationsquelleAutor jumbo | 2012-12-18

3 Comentarios

  1. 1

    Una opción sencilla es utilizar un Set como contenedor en lugar de una matriz. Automáticamente garantizar que sólo los únicos valores que están presentes.

    Usted puede ver ejemplos de TreeSet y HashSet.

    • ok.. estoy buscando en la documentación de ahora. Pero mi java/conocimientos de programación son muy rudimentarios.
    • gracias por la sugerencia. He utilizado HashSet y vino para arriba con una solución.. por Favor, compruebe si que pueden ser optimizados. He editado la parte de la pregunta y se añade la solución.
    • yo sugiero que busque en la respuesta por ago aquí. No es necesario tener 2 juegos porque al final, ambos conjuntos serán idénticos, set.add(strArray[i]); va a asegurar que se set sólo ha cadenas de caracteres
    • También puede utilizar la función Set::addAll o el constructor de sí mismo para agregar todas las cadenas en el conjunto en lugar de la iteración.
    • Karthik, gracias por la sugerencia. Yo no podría haber dejado claro, lo que yo necesito es, una Única lista de «Duplicados» no sólo única lista de todos los elementos. Es por eso que he utilizado dos conjuntos. No puedo ver cómo se puede hacer con un solo conjunto.
    • AH, ok, su más claro ahora, creo que la mayoría de los que asumió su error tipográfico. En ese caso también se puede usar algo como este para encontrar elementos duplicados, Collections.frequency(..)>1.

  2. 1

    Algo como esto debería funcionar creo. Ha sido un tiempo desde que he codificado en Java así que si alguien quiere hacer cambios, por favor.

    public String[] returnDups(String[] strArray) {
        Set<String> set = new HashSet<String>(strArray);
        return set.toArray(new String[0]);
    }

    Pero lo que todo el mundo ha sido lo que sugiere es la idea correcta. Establece hacen que sea muy fácil para eliminar los duplicados, así que usted debe utilizar. No vamos a reinventar la rueda.

  3. 0

    Para detectar dupplicates, si esa es tu pregunta, agregar todos los elememts de la matriz de un Conjunto, si se establece.agregar() devuelve false, entonces es un dupplicate, así que usted puede agregar este elemen a su lista de resultados de dupplictes.

    O si tu pregunta es que significa volver a los valores sin duplicados, entonces usted puede retirnthe conjunto, o convertir el conjunto de la lista antes de regresar.

    • Gracias AlexWien, que ha ayudado. He utilizado la lógica para resolver el problema.
    • bien, una vez que usted tiene más de 15 puntos, no te olvides de upvote.

Dejar respuesta

Please enter your comment!
Please enter your name here