【发布时间】:2009-06-14 13:12:11
【问题描述】:
来自 Sun 的 Java Tutorial,我原以为这段代码会将集合转换为数组。
import java.util.*;
public class Blagh {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
String[] array = set.toArray(new String[0]);
System.out.println(set);
System.out.println(array);
}
}
但是,这给了
[a, c, b]
[Ljava.lang.String;@9b49e6
我误解了什么?
【问题讨论】:
-
"[Ljava.lang.String;@9b49e6" 是一个字符串数组。
-
这里的元素顺序准确吗?我遇到了类似的情况,订单似乎有自己的想法,而不是按照添加项目的顺序。
-
集合通常没有定义的顺序,因此您不能依赖将元素放入集合的顺序与取出它们的顺序相同。如果你想要的话,试试 Set 接口的 LinkedHashSet 实现;它增加了这个保证。