为了账号安全,请及时绑定邮箱和手机立即绑定

小白求解,为什么我这个Set不能实现随机输出呢?

public static void main(String[] args)
{
	Set<String> set=new HashSet();
	String[] string=new String[]{"1","2","3"};
	System.out.print("原数组为:");
	for (String string2 : string)
	{
		System.out.print(string2);
	}
	for (String string2 : string)
	{
		set.add(string2);
	}
	System.out.println();
	System.out.println("长度为:"+set.size());
	
	System.err.print("Set遍历:");
	for (String string2 : set)
	{
		System.out.print(string2+" ");
	}
	
}

http://img1.sycdn.imooc.com//57a2aa6d00019f5a02930089.jpg 每次运行结果都是 321 ,不是应该每次都随机吗?

正在回答

3 回答

首先,set集合是无序的,但是你要明白无序的原理是hash值不同导致存入与取出顺序不同,实际上他是有序的,他在用hash+equals排序,多次运行都是一个结果你放心,目测你听课只听前半句

0 回复 有任何疑惑可以回复我~

随机应该是说你放入的数在set里的顺序在不同编译环境下是不能保证的,但是编译器运行时它也是按照一定的方法储存的,所以每次遍历结果都是一样的。

如果要求顺序可以用linkedhashset treeset 之类的

0 回复 有任何疑惑可以回复我~

其实是伪随机,你可以试着改一下数字,他应该不会再像321这样规律的倒序打印出来,但是你新改的字符串还是会按一定的位置排列。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

小白求解,为什么我这个Set不能实现随机输出呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信