当前位置: 首页 > 面试题库 >

从Java中的字符串中删除重复的值

桓喜
2023-03-14
问题内容

任何人都可以让我知道如何从中删除重复的值

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

和输出应该像

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

使用Java

任何帮助,将不胜感激。


问题答案:

只需一行即可:

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"));
}

输出:

Bangalore-Chennai-NewYork

请注意,订单已保留:)

关键点是:

  • split("-") 给我们不同的值作为数组
  • Arrays.asList()数组变成一个列表
  • LinkedHashSet保留唯一性 插入顺序-它完成为我们提供唯一值的所有工作,这些值通过构造函数传递
  • toString()列表是[element1, element2, ...]
  • 最后的replace命令从toString()

此解决方案要求这些值不包含字符序列", ",这是此类简洁代码的合理要求。

Java 8更新!

当然是1行:

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

正则表达式更新!

如果您不关心保留顺序(即可以删除第 一次 出现的重复项):

public String deDup(String s) {
    return s.replaceAll("(\\b\\w+\\b)-(?=.*\\b\\1\\b)", "");
}


 类似资料:
  • 问题内容: 我试图遍历一个字符串,以删除重复的字符。 例如字符串应该成为 和字符串应该成为 这是我到目前为止的内容: 做这个的最好方式是什么? 问题答案: 将字符串转换为char数组,并将其存储在中。这样可以保留你的订购,并删除重复的商品。就像是:

  • 字符串userKeyword来自用户键盘输入-我已经尝试编写一个方法来返回这个删除重复字符的字符串。 通过在while循环中移动新字符赋值,我现在得到的输出与PLAIN_ALPHA相同,而不是userKeyword,并省略了重复项。我做错了什么?

  • 我被要求编写一个程序,从字符串中删除重复的字母**注意:大小写字母被认为是重复的。我编写了代码,它适用于所有没有空格键的输入,当一个字符串带有空格时,它会显示错误。我只需要使用循环和数组,没有额外的函数或哈希,这是我的代码,几乎可以工作:

  • 问题内容: 我有像这样的字符串“ aaaabbbccccaaddddcfggghhhh”,我想删除重复的字符,得到像这样的字符串“ abcadcfgh”。 一个简单的实现是: 使用正则表达式是否可能有更好的实现? 问题答案: 你可以这样做: 正则表达式使用反向引用和捕获组。 正常的正则表达式是,但是您必须在Java中使用另一个反斜杠来使反斜杠转义。 如果您想要重复的字符数: 演示版

  • 我需要编写一个静态方法,该方法将作为参数,并返回一个新的。例如,如果我将“Maaaakkee”作为输入,它将返回“make”。我已经尝试了下面的代码,但它似乎没有显示最后一个字符。下面是我的代码:

  • 问题内容: 我正在寻找最快的方法来删除用逗号分隔的字符串中的重复值。 所以我的弦看起来像这样; 我可以将字符串分解为值然后进行比较,但是我认为这样做会很慢。那么preg_replace()会更快吗?使用此功能有人吗? 问题答案: 最短的代码是: 如果它是最快的…我不知道,那么它可能快于显式循环。 参考:,,