如何摆脱java中逗号分隔字符串中的重复条目?

时间:2012-03-07 09:13:48

标签: java

我有一个字符串places =“city,city,town”。我需要得到“城市,城镇”。基本上摆脱逗号分隔字符串中的重复条目。

places.split( “”);会给我一个String数组。我想知道,如果我可以将此数组传递给HashSet或其他东西,它会自动摆脱重复,但尝试类似的东西:

HashSet test=new HashSet(a.split(","));

给出错误:

cannot find symbol
symbol : constructor HashSet(java.lang.String[])

实现这一目标的任何巧妙方法,最好用最少量的代码?

5 个答案:

答案 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(“,”)));