如何从Java中的字符串中删除重复项?
问题描述:
我在Java中如何从Java中的字符串中删除重复项?
String s1 = "Chicago/London/London/London/Paris";
String s2 = "London/London/London/Paris";
String s3 = "Prague/London/London/London";
String s4 = "London/London";
这些字符串我应该在的replaceAll功能使用哪个正则表达式来从做“芝加哥/伦敦/巴黎”,“伦敦/巴黎”,“布拉格/伦敦”和“伦敦”这些字符串?非常感谢你
答
你将不得不自己处理。 编辑:根据@ UnholySheep的评论进行了优化。 编辑:继@ Pshemo的评论,两个Java 7/8版本都得到了改进。
public String removeDubs(String input) {
String[] parts = input.split("/");
Set<String> unique = new LinkedHashSet<>(Arrays.asList(parts));
return String.join("/", unique);
}
编辑:或者,如果您使用的是Java 8:
public String removeDubsV8(String input) {
return Arrays.stream(input.split("/"))
.distinct()
.collect(Collectors.joining("/"));
}
+1
'StringBuilder'(和'substring')的用法是不必要的,你可以做'String.join(“/”,unique);'而不是 – UnholySheep
你尝试过什么做的?为什么你认为正则表达式是正确的工具呢? – UnholySheep
从它看起来,Java String不是存储它的最佳方式。一个想法是分割它,把它放到一个Set中,从而自动消除重复项,并且,如果你真的需要这个作为一个字符串,使用'/'再次加入它。 –
这样的事情会做到这一点: new ArrayList (new HashSet (Arrays.asList(s1.split(“/”)))) – ronhash