為什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","數(shù)據(jù)結(jié)構(gòu)");
coursesToSelect.add(cr1);
Course temp = (Course) coursesToSelect.get(0);
// System.out.println("添加了課程"+":"+temp.id+":"+temp.name);
? ?Course cr2 = new Course("2","C語(yǔ)言");
? ?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","離散數(shù)學(xué)"),new Course("4","匯編語(yǔ)言")};
? ?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","高等數(shù)學(xué)"),new Course("6","大學(xué)語(yǔ)言")};
? ?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("有如下課程待選(通過(guò)foreach訪(fǎng)問(wèn)):");
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();
? ? ? ? ?//創(chuàng)建一個(gè)學(xué)生呢個(gè)對(duì)象
? ? ? ? ?Student student = new Student("1","小明");
? ? ? ? ?System.out.println("歡迎學(xué)生:"+student.name+"選課");
? ? ? ? ?//創(chuàng)建一個(gè)Scanner對(duì)象,用來(lái)接收從鍵盤(pán)輸入的課程ID
? ? ? ? ?Scanner console = new Scanner(System.in);
? ? ? ? ?for(int i = 0; i<3; i++) {
? ? ? ? System.out.println("請(qǐng)輸入課程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) {
?//打印輸出,學(xué)生所選的課程!
System.out.println("一共輸出了幾門(mén)課程:"+student.courses.size());
? ? ? ? for(Course cr : student.courses) {
? ? ? ? System.out.println("選擇了課程:"+cr.id+":"+cr.name);
? ? ? ? }
}
}
有如下課程待選(通過(guò)foreach訪(fǎng)問(wèn)):
課程:2:C語(yǔ)言
課程:1:數(shù)據(jù)結(jié)構(gòu)
課程:5:高等數(shù)學(xué)
課程:6:大學(xué)語(yǔ)言
課程:3:離散數(shù)學(xué)
課程:4:匯編語(yǔ)言
歡迎學(xué)生:小明選課
請(qǐng)輸入課程id
1
請(qǐng)輸入課程id
2
請(qǐng)輸入課程id
4
一共輸出了幾門(mén)課程:3
選擇了課程:1:數(shù)據(jù)結(jié)構(gòu)
選擇了課程:2:C語(yǔ)言
選擇了課程:4:匯編語(yǔ)言
2017-10-13
我的也是有序的,不知道為啥
2017-08-25
set里面的數(shù)據(jù)是無(wú)序的,在你打印輸出過(guò)程中,有可能有序有可能無(wú)序,程序多執(zhí)行幾次,執(zhí)行的結(jié)果就有可能不同.