如何将包含值的Set转换为字符串

时间:2017-05-12 16:51:58

标签: java algorithm collections set hashset

public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "abcdaa";
        dups(str);
    }
    public static void dups(String str){
        HashSet hs = new HashSet();
        char[] ch = str.toCharArray();
        for(int i=0; i < ch.length;i++){
            hs.add(ch[i]);
        }
        System.out.println(hs);
    }

上面的代码返回输出: [a,b,c,d]

但是我想将Set值打印成一个字符串,这样我就可以返回一个字符串值返回值如下所示:预期输出: abcd

4 个答案:

答案 0 :(得分:2)

 public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "abcdaa";
        dups(str);
    }

    public static void dups(String str) {
        HashSet<Character> hs = new HashSet<Character>();
        char[] ch = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < ch.length; i++) {
            if(hs.add(ch[i])){
                sb.append(ch[i]);
            }
        }
        System.out.println(sb);
    }

修改

public static void dups(String str) {
            HashSet<Character> hs = new HashSet<Character>();
            StringBuilder sb = new StringBuilder();
            for (Character character : str.toCharArray()) {
                if(hs.add(character)){
                    sb.append(character);
                }
            }
            System.out.println(sb);
        }

我想不出更好的方法来做到这一点...... 最好使用StringBuilder而不是String,请检查此答案https://stackoverflow.com/a/1532483/6949032

答案 1 :(得分:1)

不确定为什么没有人提到这个,但在Java 8中它非常简单:

System.out.println(String.join("", hs));

请注意,如果您想保留原始订单,则需要使用LinkedHashSet代替。

答案 2 :(得分:0)

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "abcdaa";
    String result = dups(str);
    System.out.println(result);
}
public static String dups(String str){
    HashSet hs = new HashSet();
    String strss = "";
    char[] ch = str.toCharArray();
    for(int i=0; i < ch.length;i++){
        if(hs.add(ch[i])){
            strss +=ch[i];
        }
    }
    return strss;
}

答案 3 :(得分:0)

如果您可以使用第三方库,Eclipse Collections中的String str = "abcdaa"; CharAdapter distinct = CharAdapter.adapt(str).distinct(); System.out.println(distinct); 课程可以解决问题。

java.util.HashSet

您可以看到代码的作用here。使用Character会将char值设置为CharAdapter个对象。 CharHashSet中的独特方法使用char,不需要void (A::*)()值。{/ p>

注意:我是Eclipse Collections的提交者。