Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将包含值的集合转换为字符串 publicstaticvoidmain(字符串[]args){ //TODO自动生成的方法存根 String str=“abcdaa”; dups(str); } 公共静态无效DUP(字符串str){ HashSet hs=新的HashSet(); char[]ch=str.toCharArray(); for(int i=0;i_Java_Algorithm_Collections_Set_Hashset - Fatal编程技术网

Java 如何将包含值的集合转换为字符串 publicstaticvoidmain(字符串[]args){ //TODO自动生成的方法存根 String str=“abcdaa”; dups(str); } 公共静态无效DUP(字符串str){ HashSet hs=新的HashSet(); char[]ch=str.toCharArray(); for(int i=0;i

Java 如何将包含值的集合转换为字符串 publicstaticvoidmain(字符串[]args){ //TODO自动生成的方法存根 String str=“abcdaa”; dups(str); } 公共静态无效DUP(字符串str){ HashSet hs=新的HashSet(); char[]ch=str.toCharArray(); for(int i=0;i,java,algorithm,collections,set,hashset,Java,Algorithm,Collections,Set,Hashset,上述代码返回输出:[a、b、c、d] 但我想将设置的值打印到字符串中,以便返回字符串值返回值如下所示:预期输出:abcd公共静态void main(字符串[]args){ public static void main(String[] args) { // TODO Auto-generated method stub String str = "abcdaa"; dups(str); } public static void d

上述代码返回输出:[a、b、c、d]

但我想将设置的值打印到字符串中,以便返回字符串值返回值如下所示:预期输出:abcd

公共静态void main(字符串[]args){
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);
    }
//TODO自动生成的方法存根 String str=“abcdaa”; dups(str); } 公共静态无效DUP(字符串str){ HashSet hs=新的HashSet(); char[]ch=str.toCharArray(); StringBuilder sb=新的StringBuilder(); for(int i=0;i
编辑

 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);
    }
publicstaticvoiddups(stringstr){
HashSet hs=新的HashSet();
StringBuilder sb=新的StringBuilder();
for(字符:str.toCharArray()){
如果(hs.添加(字符)){
某人附加(字符);
}
}
系统输出打印LN(sb);
}
我想没有比这更好的方法了。。。 最好使用StringBuilder而不是String,检查此答案

公共静态void main(String[]args){
//TODO自动生成的方法存根
String str=“abcdaa”;
字符串结果=dups(str);
系统输出打印项次(结果);
}
公共静态字符串DUP(字符串str){
HashSet hs=新的HashSet();
字符串strss=“”;
char[]ch=str.toCharArray();
for(int i=0;i
如果您可以使用第三方库,中的
CharAdapter
类可以解决此问题

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;
}
您可以看到代码的作用。使用
java.util.HashSet
将字符值框为
字符
对象。
CharAdapter
中的distinct方法使用一个
CharHashSet
,它不需要框装
char


注意:我是Eclipse集合的提交者。

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

String str = "abcdaa";
CharAdapter distinct = CharAdapter.adapt(str).distinct();
System.out.println(distinct);

请注意,如果要保留原始订单,则需要使用
LinkedHashSet

返回值不是
abcd
=(是..返回值不是abcdI已选中,它返回“abcd”
strss+=
是个坏主意,因为每次都会分配一个新字符串。这正是StringBuilder对新字符串的定义,我认为,这是个好主意,因为您将始终拥有新实例,有时它可以消除误解为什么不使用现代语言功能?
System.out.println(hs.stream().collect(Collectors.joining()));
我不确定如何使用Java 8 stream=Sthanks@erickmia..它正在工作..但我希望优化它,而不是使用StringBuilder。看看
Java.util.StringJoiner
String str = "abcdaa";
CharAdapter distinct = CharAdapter.adapt(str).distinct();
System.out.println(distinct);
System.out.println(String.join("", hs));