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

为什Set里的元素打印输出有有顺序

package com.imooc;


import java.util.ArrayList;

import java.util.Arrays;

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 cr1 = new Course("1","数据结构");

coursesToSelect.add(cr1);

Course temp = (Course) coursesToSelect.get(0);

// System.out.println("添加了课程"+":"+temp.id+":"+temp.name);

   Course cr2 = new Course("2","C语言");

   coursesToSelect.add(0,cr2);

   Course temp2 = (Course) coursesToSelect.get(0);

//    System.out.println("添加了课程"+":"+temp2.id+":"+temp2.name);

   

//    coursesToSelect.add(cr1);

// Course temp0 = (Course) coursesToSelect.get(2);

// System.out.println("添加了课程"+":"+temp0.id+":"+temp0.name);

   

    

   

  

   Course[] course = {new Course("3","离散数学"),new Course("4","汇编语言")};

   coursesToSelect.addAll(Arrays.asList(course));

   Course temp3 = (Course) coursesToSelect.get(2);

   Course temp4 = (Course) coursesToSelect.get(3);

//    System.out.println("添加了课程"+":"+temp3.id+":"+temp3.name+";"+temp4.id+":"+temp4.name);

   

   Course[] course2 = {new Course("5","高等数学"),new Course("6","大学语言")};

   coursesToSelect.addAll(2, Arrays.asList(course2));

   Course temp5 = (Course)coursesToSelect.get(2);

   Course temp6 = (Course)coursesToSelect.get(3);

//    System.out.println( "添加了课程"+temp5.id+":"+temp5.name+temp6.id+":"+temp6.name);

   

}

 

public void testForEach() {

System.out.println("有如下课程待选(通过foreach访问):");

for(Object obj : coursesToSelect) {

Course cr = (Course)obj;

System.out.println("课程:"+cr.id+":"+cr.name);

}

}

 


public static void main(String[] args) {

// TODO Auto-generated method stub

    

         SetTest st = new SetTest();

        st.testAdd();

         st.testForEach();

         //创建一个学生呢个对象

         Student student = new Student("1","小明");

         System.out.println("欢迎学生:"+student.name+"选课");

         //创建一个Scanner对象,用来接收从键盘输入的课程ID

         Scanner console = new Scanner(System.in);

         for(int i = 0; i<3; i++) {

        System.out.println("请输入课程id");

        String courseId = console.next();

        for(Course cr : st.coursesToSelect) {

        if(cr.id.equals(courseId)) {

        student.courses.add(cr);

        }

        }

         }

         st.testForEachForSet(student);

       

         

}

public void testForEachForSet(Student student) {

 //打印输出,学生所选的课程!

System.out.println("一共输出了几门课程:"+student.courses.size());

        for(Course cr : student.courses) {

        System.out.println("选择了课程:"+cr.id+":"+cr.name);

        }

}


}

有如下课程待选(通过foreach访问):

课程:2:C语言

课程:1:数据结构

课程:5:高等数学

课程:6:大学语言

课程:3:离散数学

课程:4:汇编语言

欢迎学生:小明选课

请输入课程id

1

请输入课程id

2

请输入课程id

4

一共输出了几门课程:3

选择了课程:1:数据结构

选择了课程:2:C语言

选择了课程:4:汇编语言


正在回答

2 回答

我的也是有序的,不知道为啥

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

set里面的数据是无序的,在你打印输出过程中,有可能有序有可能无序,程序多执行几次,执行的结果就有可能不同.

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

慕粉1468924816 提问者

我执行了好多次 都是有序的
2017-08-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什Set里的元素打印输出有有顺序

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