关于set的问题,看下面的程序:import java.util.*;
class ExampleHashSet
{
public static void main(String [] args)
{
HashSet set = new HashSet();
String s1 = "abc";
String s2 = "def";
String s3 = "";
set.add(s1);
set.add(s2); Iterator i1 = set.iterator();
while(i1.hasNext())
{
s3 += (String)i1.next();
} System.out.println(s3);
}
}运行结果是:defabc我的问题是:为什么运行结果不是顺序的abcdef 而是逆序的defabc还有啊,如果按照这个理论:逆序打印输出结果,那么看下面的程序,输出结果为什么结果即不是顺序又不是逆序?import java.util.*;
class ExampleHashSet
{
public static void main(String [] args)
{
HashSet set = new HashSet();
String s1 = "abc";
String s2 = "def";
String s3 = "ghi";
String s4 = "jkl";
String s5="";
set.add(s1);
set.add(s2);
set.add(s3);
set.add(s4); Iterator i1 = set.iterator();
while(i1.hasNext())
{
s5 += (String)i1.next();
} System.out.println(s5);
}
}运行结果是:ghidefabcjkl如果按照第一个问题的结论是逆序打印结果,那么此时的结果为什么不是jklghidefabc希望得到解答,先谢谢你了
class ExampleHashSet
{
public static void main(String [] args)
{
HashSet set = new HashSet();
String s1 = "abc";
String s2 = "def";
String s3 = "";
set.add(s1);
set.add(s2); Iterator i1 = set.iterator();
while(i1.hasNext())
{
s3 += (String)i1.next();
} System.out.println(s3);
}
}运行结果是:defabc我的问题是:为什么运行结果不是顺序的abcdef 而是逆序的defabc还有啊,如果按照这个理论:逆序打印输出结果,那么看下面的程序,输出结果为什么结果即不是顺序又不是逆序?import java.util.*;
class ExampleHashSet
{
public static void main(String [] args)
{
HashSet set = new HashSet();
String s1 = "abc";
String s2 = "def";
String s3 = "ghi";
String s4 = "jkl";
String s5="";
set.add(s1);
set.add(s2);
set.add(s3);
set.add(s4); Iterator i1 = set.iterator();
while(i1.hasNext())
{
s5 += (String)i1.next();
} System.out.println(s5);
}
}运行结果是:ghidefabcjkl如果按照第一个问题的结论是逆序打印结果,那么此时的结果为什么不是jklghidefabc希望得到解答,先谢谢你了
楼主【zhu_apollo】截止到2008-06-24 21:47:20的历史汇总数据(不包括此帖):
发帖数:36 发帖分:343
结贴数:21 结贴分:181
未结数:15 未结分:162
结贴率:58.33 % 结分率:52.77 %
楼主加油
复制粘贴一份API语录,希望对您有所帮助...public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, Serializable此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此集合进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
是不保证排列顺序的,你在打印一次,还可能和你上次的不一样。
你试试看。