2014-03-28 38 views
1

我在我的代码中使用了一个包含一些整数的集合。我的代码中某处需要将这些数字作为字符串,以便函数可以对它们进行操作。 (该功能置换它得到一个字符串作为输入参数。)使用toString()进行设置

当我的设置是一样的东西:

Set<Integer> U= new TreeSet<Integer>(); 
U.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9)); 

我需要一个字符串的9长度在它具有以下九个数字。但是,通过使用

String str=U.toString(); 

海峡将[1, 2, 3, 4, 5, 6, 7, 8, 9]与27

长度反正是有只有号码存储到字符串没有[和,和空间?

+0

你为什么要?如果它只是一系列的数字,那么你怎么知道实际值是什么?一个1到9的数组会给你123456789的结果,但是包含三个值123,456和789的数组也是如此。你能保证该数组只有一个数字值吗? “我的代码中的某处需要将这些数字作为字符串,以便函数可以对它们进行操作。”听起来像这个功能需要改变,听起来不像它设计得很好。 –

+0

另一个函数获取一个字符串并计算是排列。它实际上是一个非常简单的递归函数,但输入必须是String。主要目的是计算这些数字的排列。 –

+0

所以这个函数是建立在输入始终是由一个数字的数字组成的字符串的基础上的? –

回答

0

你可以试试这个:

Set<Integer> U = new TreeSet<Integer>(); 
U.addAll(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9)); 

StringBuilder sb = new StringBuilder(U.size()); 
for (int a : U) 
    sb.append(a); 

System.out.println(sb); 
 
123456789 

的Java 8做法:

Iterable<String> iter = U.stream().map(Object::toString)::iterator; 
System.out.println(String.join("", iter)); 
 
123456789 
1

根据需要创建TreeSet的子类并覆盖toString()方法!

1

@Override扩展类中的toString。 for循环简单应该这样做

1

的一种方法是创建自己的方法。您可以循环访问Set,并使用StringBuilder构造String

public String myToString() { 
    StringBuilder sb = new StringBuilder(); 

    for (Integer i : U) { 
     sb.append(i); 
    } 

    return sb.toString(); 
} 

的另一种方法将被重写toString()方法。实施将是上面那样的相似:

@Override 
public String toString() { 
    // ... 
} 
1

您需要实现它自己:

public static String setToString(Set<Integer> set) { 
    StringBuilder sb = new StringBuilder(); 
    for (Integer i : set) { 
     sb.append(i); 
    } 
    return sb.toString(); 
} 
0

简单的使用:

System.out.println(Arrays.toString(U.toArray()));