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

HashSet的for-each 和 iterator 的遍历为什么每次输出的顺序是一定的,不应该是无序的吗?

HashSet的for-each 和 iterator 的遍历为什么每次输出的顺序是一定的,不应该是无序的吗?

慕粉3291149 2016-05-04 19:06:12
学生类:import java.util.HashSet;import java.util.Set;public class Student { public String id; public String name; public Set<Course> courses; public Student(String id,String name){ this.id = id; this.name = name; this.courses = new HashSet(); }}测试类:import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;import java.util.Scanner;public class SetTest { public List<Course> coursesToSelect; public SetTest(){ this.coursesToSelect = new ArrayList<Course>(); } public void testAdd(){ Course c1 = new Course("1","数据结构"); coursesToSelect.add(c1); Course c2 = new Course("2","C语言"); coursesToSelect.add(1,c2); Course[] c = {new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(c)); } public void testForEach(){ System.out.println("有如下课程可以选:"); for(Course c : coursesToSelect){ System.out.println("课程:"+c.id+":"+c.name); } } public void testForEachForSet(Student stu){ for(Course c : stu.courses){ System.out.println("选择了课程:"+c.id+":"+c.name); } } public void testIteratorForSet(Student stu){ Iterator<Course> it = stu.courses.iterator(); while(it.hasNext()){ Course c = it.next(); System.out.println("选择了课程:"+c.id+":"+c.name); } } public static void main(String[] args) { SetTest st = new SetTest(); st.testAdd(); st.testForEach(); Student stu = new Student("1","小明"); System.out.println("欢迎学生:"+stu.name+"选课!"); Scanner in = new Scanner(System.in); for(int i=0;i<3;i++){ System.out.print("输入你想选择的课程:"); String choice = in.next(); for(Course c : st.coursesToSelect){ if(c.id.equals(choice)){ stu.courses.add(c); } } } st.testIteratorForSet(stu); }
查看完整描述

2 回答

?
慕仰7261054

TA贡献8条经验 获得超2个赞

无序是指它每次存进去的东西的存储地址不是按顺序排列的,但是当你存进去之后段时间内它的hash地址是不会变的

查看完整回答
反对 回复 2016-06-02
?
慕粉_编程新手

TA贡献6条经验 获得超0个赞

是根据你存储进去的顺序遍历的

查看完整回答
反对 回复 2016-05-06
  • 2 回答
  • 0 关注
  • 2404 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信