Java 如何将包含值的集合转换为字符串 publicstaticvoidmain(字符串[]args){ //TODO自动生成的方法存根 String str=“abcdaa”; dups(str); } 公共静态无效DUP(字符串str){ HashSet hs=新的HashSet(); char[]ch=str.toCharArray(); for(int i=0;i
上述代码返回输出:[a、b、c、d] 但我想将设置的值打印到字符串中,以便返回字符串值返回值如下所示:预期输出:abcdJava 如何将包含值的集合转换为字符串 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
公共静态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));