在java中删除字符串中的重复值

在java中删除字符串中的重复值,java,string,duplicates,duplicate-removal,Java,String,Duplicates,Duplicate Removal,有人能告诉我如何从中删除重复值吗 String s="Bangalore-Chennai-NewYork-Bangalore-Chennai"; 输出应该是这样的 String s="Bangalore-Chennai-NewYork-"; 使用Java 如有任何帮助,我们将不胜感激。仅此而已: 分析字符串并使用分隔符“-”拆分标记 将令牌加载到集合中 迭代集合并删除重复项 使用结果集合构建新字符串 最棘手的部分应该是3,但不是不可能的。如果使用集合,则可以跳过此步骤 编辑在添加元素之前,

有人能告诉我如何从中删除重复值吗

String s="Bangalore-Chennai-NewYork-Bangalore-Chennai"; 
输出应该是这样的

String s="Bangalore-Chennai-NewYork-";
使用Java

如有任何帮助,我们将不胜感激。

仅此而已:

  • 分析字符串并使用分隔符“-”拆分标记
  • 将令牌加载到
    集合中
  • 迭代
    集合
    并删除重复项
  • 使用结果
    集合
    构建新字符串
  • 最棘手的部分应该是3,但不是不可能的。如果使用
    集合
    ,则可以跳过此步骤

    编辑在添加元素之前,您可以用状态检查代替2和3

  • 分析字符串并使用分隔符“-”拆分标记
  • 将令牌加载到
    集合中
  • 迭代
    集合
    并删除重复项
  • 使用结果
    集合
    构建新字符串
  • 最棘手的部分应该是3,但不是不可能的。如果使用
    集合
    ,则可以跳过此步骤


    编辑在添加元素之前,您可以使用状态检查替换2和3

    您可以将字符串添加到哈希集中

  • 将字符串拆分为“-”
  • 将单个单词存储在数组中。i、 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]);
          }
    
    Set Set=newhashset();
    对于(int i=0;i
    您可以将字符串添加到哈希集中

  • 将字符串拆分为“-”
  • 将单个单词存储在数组中,即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]);
          }
    
    Set Set=newhashset();
    对于(int i=0;i
    印刷品:

    Bangalore-Chennai-NewYork
    
    印刷品:

    Bangalore-Chennai-NewYork
    

    通过按
    -
    拆分来创建字符串数组,然后从中创建哈希集

    String s="Bangalore-Chennai-NewYork-Bangalore-Chennai"; 
    String[] strArr = s.split("-");
    Set<String> set = new HashSet<String>(Arrays.asList(strArr));
    
    下面是执行此操作的示例代码:

    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());
    

    通过按
    -
    拆分来创建字符串数组,然后从中创建哈希集

    String s="Bangalore-Chennai-NewYork-Bangalore-Chennai"; 
    String[] strArr = s.split("-");
    Set<String> set = new HashSet<String>(Arrays.asList(strArr));
    
    下面是执行此操作的示例代码:

    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());
    

    这在一行中完成:

    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"));
    }
    
    请注意,订单将被保留:)

    重点是:

    • split(“-”)
      将不同的值作为一个数组提供给我们
    • Arrays.asList()
      将数组转换为列表
    • LinkedHashSet
      保留唯一性和插入顺序-它完成了为我们提供唯一值的所有工作,这些值通过构造函数传递
    • 列表的
      toString()
      [element1,element2,…]
    • 最后的
      replace
      命令删除
      toString()中的“标点符号”
    此解决方案要求值不包含字符序列“
    ”、“
    ”——这是对此类简洁代码的合理要求

    Java8更新! 当然是一行:

    public String deDup(String s) {
        return Arrays.stream(s.split("-")).distinct().collect(Collectors.joining("-"));
    }
    
    正则表达式更新! 如果您不关心保留顺序(即删除第一次出现的重复项是可以的):


    这在一行中完成:

    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"));
    }
    
    请注意,订单将被保留:)

    重点是:

    • split(“-”)
      将不同的值作为一个数组提供给我们
    • Arrays.asList()
      将数组转换为列表
    • LinkedHashSet
      保留唯一性和插入顺序-它完成了为我们提供唯一值的所有工作,这些值通过构造函数传递
    • 列表的
      toString()
      [element1,element2,…]
    • 最后的
      replace
      命令删除
      toString()中的“标点符号”
    此解决方案要求值不包含字符序列“
    ”、“
    ”——这是对此类简洁代码的合理要求

    Java8更新! 当然是一行:

    public String deDup(String s) {
        return Arrays.stream(s.split("-")).distinct().collect(Collectors.joining("-"));
    }
    
    正则表达式更新! 如果您不关心保留顺序(即删除第一次出现的重复项是可以的):

    wordsArray=s.split(“-”);
    List wordsList=newarrays.asList(wordsArray);
    Set wordsSet=newlinkedhashset(wordsList);
    String[]noDuplicates=新字符串[wordsSet.size()];
    文字集toArray(无副本);
    
    wordsArray=s.split(“-”);
    List wordsList=newarrays.asList(wordsArray);
    Set wordsSet=newlinkedhashset(wordsList);
    String[]noDuplicates=新字符串[wordsSet.size()];
    文字集toArray(无副本);
    
    我更喜欢比上面所有内容都简单的方法

    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, "-");        
    }
    
    public void removeDuplicates(){
    String myString=“班加罗尔钦奈纽约班加罗尔钦奈”;
    String[]数组=myString.split(“-”);
    Set hashSet=新的hashSet(Arrays.asList(array));
    String newString=StringUtils.join(hashSet,“-”);
    }
    
    我更喜欢比上面所有内容都简单的方法

    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, "-");        
    }
    
    public void removeDuplicates(){
    String myString=“班加罗尔钦奈纽约班加罗尔钦奈”;
    String[]数组=myString.split(“-”);
    Set hashSet=新的hashSet(Arrays.asList(array));
    String newString=StringUtils.join(hashSet,“-”);
    }
    
    导入java.util.HashSet;
    公共类拆分字符串{
    公共静态void main(字符串[]args){
    字符串st=新字符串(“新德里钦奈纽约班加罗尔钦奈新德里钦奈纽约”);
    StringBuffer stb=新的StringBuffer();
    HashSet HashSet=新的HashSet();
    对于(字符串a:st.split(“-”))
    添加(a);
    Object[]str=(Object[])hashset.toArray();
    对于(int i=0;i
    导入java.util.HashSet;
    公共类拆分字符串{
    公共静态void main(字符串[]args){
    字符串st=n
    
    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);
        }
    }
    
    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+" ");
            }                   
        }
    }
    
    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);
    }
    
    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;
    }
    
                        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());
    
    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] + " ");
            }
    
        }
    
    }
    
    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();