Java 从对象变量获取TreeSet对象

Java 从对象变量获取TreeSet对象,java,object,treeset,Java,Object,Treeset,我有一个值为[0,2,4,5,9]的对象val,实际上这些值是从树集创建的,如下所示 TreeSet ts=new TreeSet (); ts.add(0); ts.add(2); ts.add(4); ts.add(5); ts.add(9); System.out.println(ts); 输出 [0,2,4,5,9] 我将输出作为字符串从服务器端传递到客户端 在客户端,我已经 Object obj="[0,2,4,5,9]"; 谁能告诉我如何将对象值[0,2,4,5,9]转换为T

我有一个值为[0,2,4,5,9]的对象val,实际上这些值是从树集创建的,如下所示

TreeSet ts=new TreeSet ();
ts.add(0);
ts.add(2);
ts.add(4);
ts.add(5);
ts.add(9);

System.out.println(ts);
输出

[0,2,4,5,9]
我将输出作为字符串从服务器端传递到客户端

在客户端,我已经

Object obj="[0,2,4,5,9]";

谁能告诉我如何将对象值[0,2,4,5,9]转换为TreeSet对象,以便我可以迭代这些值

您可以将TreeSet值以
JSONArray
的形式发送回客户端。我建议您查看
org.json
包,以便轻松地进行此类客户端和服务器交互

注意:JSON是比xml更轻量级的数据交换格式。最新的浏览器支持json作为默认标准。如果您还想使用基于字符串的值,则必须使用
javascript
函数来拆分值并使用它们

如何将对象值[0,2,4,5,9]转换为TreeSet对象 我可以迭代这些值

以下是将对象值转换为树集的方法

 Object obj="[0,2,4,5,9]";

 String[] arr=obj.toString().substring(1, obj.toString().length()-1).split(",");

 TreeSet ts=new TreeSet(Arrays.asList(arr));

例如:在下面的变量中有TreeSet的字符串值

var str = "[0,2,4,5,9]";
str =  str.substring(1,str.length-1);

var res = str.split(","); // This gives you a array of the elements.

由于类
AbstractCollection
实现了
toString()
方法

 /**
 * Returns a string representation of this collection.  The string
 * representation consists of a list of the collection's elements in the
 * order they are returned by its iterator, enclosed in square brackets
 * (<tt>"[]"</tt>).  Adjacent elements are separated by the characters
 * <tt>", "</tt> (comma and space).  Elements are converted to strings as
 * by <tt>String.valueOf(Object)</tt>.<p>
 *
 * This implementation creates an empty string buffer, appends a left
 * square bracket, and iterates over the collection appending the string
 * representation of each element in turn.  After appending each element
 * except the last, the string <tt>", "</tt> is appended.  Finally a right
 * bracket is appended.  A string is obtained from the string buffer, and
 * returned.
 * 
 * @return a string representation of this collection.
 */
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("[");

    Iterator<E> i = iterator();
    boolean hasNext = i.hasNext();
    while (hasNext) {
        E o = i.next();
        buf.append(o == this ? "(this Collection)" : String.valueOf(o));
        hasNext = i.hasNext();
        if (hasNext)
            buf.append(", ");
    }

buf.append("]");
return buf.toString();
}
/**
*返回此集合的字符串表示形式。弦
*表示由集合中集合元素的列表组成
*它们由其迭代器返回的顺序,用方括号括起来
* ("[]").  相邻元素由字符分隔
*“,“(逗号和空格)。元素转换为字符串,如下所示:
*通过字符串.valueOf(对象)。
*
*此实现创建一个空字符串缓冲区,并附加一个左
*方括号,并在附加字符串的集合上迭代
*依次表示每个元素。在附加每个元素之后
*除最后一个外,还追加了字符串“”。最后是一个权利
*附加括号。从字符串缓冲区获取字符串,并且
*返回。
* 
*@返回此集合的字符串表示形式。
*/
公共字符串toString(){
StringBuffer buf=新的StringBuffer();
buf.追加(“[”);
迭代器i=迭代器();
布尔hasNext=i.hasNext();
while(hasNext){
EO=i.next();
buf.append(o==this?”(this Collection)”:String.valueOf(o));
hasNext=i.hasNext();
如果(下一步)
buf.追加(“,”);
}
buf.追加(“]”);
返回buf.toString();
}
这就是为什么当您试图直接打印TreeSet时,会得到一个字符串,如,[0,2,4,5,9]

相反,如果你有像[0,2,4,5,9]这样的字符串

您可以删除字符,包括
[
]
。然后使用
String.split(“,”
方法将值放入字符串数组中


然后使用
新树集(Arrays.asList(stringArray))
;将值转换为
TreeSet
对象。

JSON格式可用于将数据从服务器发送回客户端。这种方法有什么问题吗?我在操作问题中没有得到一个JSON单词。@Masud,是的,我理解。但是OP希望将Object中的数据转换成客户端中的树集,@KeerthiRamanathan说JSONArray可能是比使用收集接口更好的选择……因为我们可以从服务器发送JSONArray,在服务器上数据可以在客户端轻松迭代。客户端是什么意思?如果是javascript,那么就没有treeset这样的结构。但是你可以通过拆分得到每个值。客户端是android