我有一个字符串places =“city,city,town”。我需要得到“城市,城镇”。基本上摆脱逗号分隔字符串中的重复条目。
places.split( “”);会给我一个String数组。我想知道,如果我可以将此数组传递给HashSet或其他东西,它会自动摆脱重复,但尝试类似的东西:
HashSet test=new HashSet(a.split(","));
给出错误:
cannot find symbol
symbol : constructor HashSet(java.lang.String[])
实现这一目标的任何巧妙方法,最好用最少量的代码?
答案 0 :(得分:10)
HashSet<String> test=new HashSet<String>(Arrays.asList(s.split(",")));
这是因为HashSet没有需要数组的构造函数。它期待一个集合,这就是我在Arrays.asList(s.split(","))
答案 1 :(得分:2)
String s[] = places.split(",");
HashSet<String> hs = new HashSet<String>();
for(String place:s)
hs.add(place);
答案 2 :(得分:1)
如果您关心订购,我建议您使用LinkedHashSet
。
LinkedHashSet test = new LinkedHashSet(Arrays.asList(a.split(",")));
答案 3 :(得分:1)
在Java 8中执行此操作的另一种方法是:
假设您有一个字符串 str ,其中包含一些逗号分隔的值。您可以将其转换为流,并删除重复项,然后重新连接成逗号分隔的值,如下所示:
String str = "1,2,4,5,3,7,5,3,3,8";
str = String.join(",",Arrays.asList(str.split(",")).stream().distinct().collect(Collectors.toList()));
这会给你一个字符串 str ,没有任何重复
答案 4 :(得分:0)
String[] functions= commaSeperatedString.split(",");
List<String> uniqueFunctions = new ArrayList<>();
for (String function : functions) {
if ( !uniqueFunctions.contains(function.trim())) {
uniqueFunctions.add(function.trim());
}
}
return String.join(",",uniqueFunctions);
或者您可以使用linkedHashset
LinkedHashSet结果=新的LinkedHashSet(Arrays.asList(functions.split(“,”)));