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
答案 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的提交者。