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

为什么我的Set每次取出的顺序一样,不是每次都会变吗?

为什么我用的是Set,每次的牌都是一样的,虽然存进去的顺序打乱了,但每次运行的结果都一样。用foreach,历遍元素输出的也是一样的。

正在回答

2 回答

使用集合元素添加元素后确实是无序的,但通过迭代器或者foreach输出元素的顺序几乎都是一致的.具体跟哪些因素有关我也说不出.

所以涉及到打乱元素顺序就不能使用set了.

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

不应该啊,贴代码,一起看看

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

Paul666 提问者

public static void main(String[] args) { String[] cardnums={"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; String[] cardcols={"黑桃","红桃","梅花","方块"};//创建扑克元素 Set<Card> h=new HashSet<Card>();//创建Set将扑克牌存入,用于打乱扑克牌
2016-04-09 回复 有任何疑惑可以回复我~
#2

Paul666 提问者

int m=cardcols.length*cardnums.length; for(int i=0;i<cardcols.length;i++){ for(int j=0;j<cardnums.length;j++){ int k=0; Card cards[]=new Card[m]; cards[k]=new Card(cardcols[i],cardnums[j]); h.add(cards[k]);//将扑克牌导入Set
2016-04-09 回复 有任何疑惑可以回复我~
#3

Paul666 提问者

for(Card ca:h){ System.out.println(ca.color+ca.cnum+" "); ​ } 虽然顺序打乱了。。但每次输出的是一样的。。
2016-04-09 回复 有任何疑惑可以回复我~
#4

Paul666 提问者

虽然程序问题已经解决了。。用collections.shuffle()。。洗牌,。。。但是还是不懂Set怎么和老师讲的不一样..难道是老师每次都把不同元素存入了Set,而改变了Set里元素的顺序;而我之后没改变Set,所以虽然打乱了顺序就只有一次?
2016-04-09 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

为什么我的Set每次取出的顺序一样,不是每次都会变吗?

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