Puede alguien por favor, hágamelo saber cómo quitar valores duplicados de

String s="Bangalore-Chennai-NewYork-Bangalore-Chennai"; 

y la salida debe ser como

String s="Bangalore-Chennai-NewYork-";

el uso de Java..

Cualquier ayuda se agradece.

Asegúrese de que usted desea que el "-" al final del resultado?

OriginalEl autor SSG | 2011-07-22

14 Comentarios

  1. 35

    Esto lo hace en una sola línea:

    public String deDup(String s) {
        return new LinkedHashSet<String>(Arrays.asList(s.split("-"))).toString().replaceAll("(^\[|\]$)", "").replace(", ", "-");
    }
    
    public static void main(String[] args) {
        System.out.println(deDup("Bangalore-Chennai-NewYork-Bangalore-Chennai"));
    }

    De salida:

    Bangalore-Chennai-NewYork

    Observe que el orden se conserva 🙂

    Puntos clave son:

    • split("-") nos da diferentes valores de una matriz
    • Arrays.asList() convierte la matriz en una Lista
    • LinkedHashSet preserva la singularidad y orden de inserción – se hace la obra de la que nos da los valores únicos, que se transmiten a través del constructor
    • la toString() de una Lista es [element1, element2, ...]
    • el final replace comandos de quitar la «puntuación» de la toString()

    Esta solución requiere que los valores no contienen la secuencia de caracteres ", " – un motivo razonable para tales lacónico código.

    Java 8 Update!

    Del curso es de 1 línea:

    public String deDup(String s) {
        return Arrays.stream(s.split("-")).distinct().collect(Collectors.joining("-"));
    }

    Regex actualización!

    Si usted no se preocupan por la preservación del orden (es decir, es ACEPTAR para eliminar la primera ocurrencia de un duplicado):

    public String deDup(String s) {
        return s.replaceAll("(\b\w+\b)-(?=.*\b\1\b)", "");
    }
    El corte de los soportes haría mediante substring(), y hacerlo en dos líneas en su lugar.
    usted podría romper esta en muchas líneas, pero esta respuesta es también una demostración de cómo se puede hacer en una sola línea.

    OriginalEl autor Bohemian

  2. 4
    public static String removeDuplicates(String txt, String splitterRegex)
    {
        List<String> values = new ArrayList<String>();
        String[] splitted = txt.split(splitterRegex);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < splitted.length; ++i)
        {
            if (!values.contains(splitted[i]))
            {
                values.add(splitted[i]);
                sb.append('-');
                sb.append(splitted[i]);
            }
        }
        return sb.substring(1);
    
    }

    Uso:

    String s = "Bangalore-Chennai-NewYork-Bangalore-Chennai";
    s = removeDuplicates(s, "\-");
    System.out.println(s);

    Imprime:

    Bangalore-Chennai-NewYork

    OriginalEl autor Martijn Courteaux

  3. 2

    Usted puede agregar sus cadenas a un HashSet.

    1. Dividir las cuerdas de un «-«.
    2. Almacén de las palabras individuales en la serie. yo.e arr[]

    Sinppet :

    Set<String> set = new HashSet<String>();
    
        for(int i=0; i < arr.length; i++){
          if(set.contains(arr[i])){
            System.out.println("Duplicate string found at index " + i);
          } else {
            set.add(arr[i]);
          }
    O un LinkedHashSet para mantener el orden original
    Gracias fue de gran ayuda……
    Vamos, ¿de verdad? Estás revisando para ver si la Cadena ya está en el Conjunto. Pero el punto central de un Conjunto es que no contiene duplicados. Que el código redundante!!!

    OriginalEl autor sgokhales

  4. 1

    Crear array de string por desdoblamiento por - y, a continuación, crear un hashSet de ella.

    String s="Bangalore-Chennai-NewYork-Bangalore-Chennai"; 
    String[] strArr = s.split("-");
    Set<String> set = new HashSet<String>(Arrays.asList(strArr));

    Si quieres volver como matriz de cadena, a continuación, haga lo siguiente:

    String[] result = new String[set.size()];
    set.toArray(result);

    Aquí es un ejemplo de código para hacer esto:

    String s="Bangalore-Chennai-NewYork-Bangalore-Chennai"; 
    String[] strArr = s.split("-");
    Set<String> set = new LinkedHashSet<String>(Arrays.asList(strArr));
    String[] result = new String[set.size()];
    set.toArray(result);
    StringBuilder res = new StringBuilder();
    for (int i = 0; i < result.length; i++) {
        String string = result[i];
        if(i==result.length-1)
            res.append(string);
        else
            res.append(string).append("-");
    }
    System.out.println(res.toString());

    De salida:-

    Bangalore-Chennai-NewYork

    OriginalEl autor Harry Joy

  5. 1

    Sólo la idea:

    1. analizar la cadena y se reparten las fichas utilizando el separador «-«
    2. de carga de las fichas en un Collection
    3. recorrer el Collection y borrar los duplicados
    4. utilizar el resultado Collection para construir la nueva cadena

    La mayor parte difícil debe ser de 3, pero no imposible. Si utiliza un Set, puede omitir este paso.

    EDITAR tal vez usted puede sustituir 2&3 con una presencia de verificación antes de agregar el elemento

    OriginalEl autor ascanio

  6. 1
    static String RemoveDuplicateCharInString(String s){
        for (int i = 0; i < s.length(); i++) {
            if((s.substring(i+1)).indexOf(s.charAt(i))!=-1){
                s=s.substring(0,i+1)+(s.substring(i+1)).replaceAll(""+s.charAt(i),"");
            }
        }
        return s;
    }
    Usted debería decir unas pocas palabras acerca de su solución de código y cómo se responde a la OPs cuestión, de manera que ellos puedan entender, en lugar de enviar el código.

    OriginalEl autor raj neeraj

  7. 0
    wordsArray = s.split("-");
    List<String> wordsList = new Arrays.asList(wordsArray);
    Set<String>  wordsSet  = new LinkedHashSet<String>(wordsList);
    
    String[] noDuplicates = new String[wordsSet.size()];
    wordsSet.toArray(noDuplicates);

    OriginalEl autor Hunter McMillen

  8. 0

    Prefiero este que es más sencillo que todo lo anterior.

    public void removeDuplicates() {
      String myString = "Bangalore-Chennai-NewYork-Bangalore-Chennai";
    
      String[] array = myString.split("-");
    
      Set<String> hashSet = new HashSet<String>(Arrays.asList(array));
    
      String newString = StringUtils.join(hashSet, "-");        
    }
    Un -1? ¿Para qué?

    OriginalEl autor Aaron Chambers

  9. 0
    public static void main(String[] args) {
        String str="Bangalore-Chennai-Newyork-Bangalore-Chennai";
        String output="";
        String [] arr=str.split("-");
    
        LinkedHashSet<String> lhs=new LinkedHashSet<String>();
        for (int i = 0; i < arr.length; i++) {
            lhs.add(arr[i]);
        }
        for(String s:lhs){
            output=output+s+"-";
        }
    
        System.out.println(output);
    }
    Sería bueno explicar lo que la solución sería, en lugar de pegar el código de la solución.

    OriginalEl autor RAJESHPODDER007

  10. 0

    Un poco tarde para el juego, pero yo simplemente uso un HashMap. Es fácil de entender y tiene un rápido búsquedas en las teclas, puede no ser la mejor manera, pero sigue siendo una buena respuesta de la OMI. Yo lo uso todo el tiempo cuando lo necesita para dar formato rápido y sucio:

                        String reason = "Word1 , Word2 , Word3";
                        HashMap<String,String> temp_hash = new HashMap<String,String>();
                        StringBuilder reason_fixed = new StringBuilder();
                        //in:
                        for(String word : reason.split(",")){
                            temp_hash.put(word,word);
                        }
                        //out:
                        for(String words_fixed : temp_hash.keySet()){
                            reason_fixed.append(words_fixed + " , ");
                        }
                        //print:
                        System.out.println(reason_fixed.toString());

    OriginalEl autor Petro

  11. 0
    public class RemDuplicateWordFromString {
    public static void main(String[] args) {
        String s1 = "Hello India Hello India Hello India Hello India";
        countWords(s1);
    }
    public static void countWords(String s1) {
        String[] s2 = s1.split(" ");
        for (int i = 0; i < s2.length; i++) {
            for (int j = i + 1; j < s2.length; j++) {
                if (s2[i].equals(s2[j])) {
                    if (i != j) {
                        s2[i] = "";
                    }
                }
            }
        }
        for (int i = 0; i < s2.length; i++) {
            if (s2[i] != "") {
                System.out.print(s2[i] + " ");
            }
    
        }
    
    }

    }

    OriginalEl autor Manash Ranjan Dakua

  12. 0
    StringBuilder builderWord = new StringBuilder(word);
    for(int index=0; index < builderWord.length(); index++) {
        for(int reverseIndex=builderWord.length()-1; reverseIndex > index;reverseIndex--) {
            if (builderWord.charAt(reverseIndex) == builderWord.charAt(index)) {
                builderWord.deleteCharAt(reverseIndex);
            }
        }
    }
    return builderWord.toString();
    Por favor, no acaba de publicar los bloques de código sin contexto – incluir una explicación así

    OriginalEl autor venkat

  13. -1
    import java.util.HashSet;
    
    public class SplitString {
        public static void main(String[] args) {
            String st = new String("New Delhi-Chennai-New York-Bangalore-Chennai-New Delhi-Chennai-New York");
            StringBuffer stb = new StringBuffer();
    
            HashSet<String> hashset = new HashSet<String>();
            for (String a : st.split("-"))
                hashset.add(a);
    
            Object[] str = (Object[]) hashset.toArray();
    
            for (int i = 0; i < str.length; i++) {
                stb.append(str[i]);
    
                if (i < str.length - 1)
                    stb.append("-");
    
            }
    
            System.out.println(stb);
        }
    }

    OriginalEl autor sushil kumar bhaskar

  14. -2
    import java.util.*;
    
    public class RemoveDuplicateWord {
    
        public static void main(String[] args) {
            String str = "Hai hello Hai how hello are how you";
            removeDupWord(str);
        }
    
        public static void removeDupWord(String input) {
            List<String> list = Arrays.asList(input.split(" "));
            LinkedHashSet<String> lhs = new LinkedHashSet<String>(list);
            for(String s : lhs) {
                System.out.print(s+" ");
            }                   
        }
    }
    Espero que este trabajo definitivamente,,,

    OriginalEl autor Abdullah…

Dejar respuesta

Please enter your comment!
Please enter your name here