輸出不是無序,輸入2,1,4 輸出也是2,1,4 一直都是,代碼都在了,幫忙看看什么毛病,謝謝
package com.imooc.collection;
import java.util.HashSet;
import java.util.Set;
/**
?* 學(xué)生類
?* @author 王陽(yáng)
?*
?*/
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<Course>();
}
}
?
package com.imooc.collection;
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() {
// TODO Auto-generated constructor stub?
coursesToSelect = new ArrayList<Course>();
}
public void testAdd() {? ?
//創(chuàng)建一個(gè)課程對(duì)象,并通過調(diào)用add方法,添加到備選課程List中;
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語言");
coursesToSelect.add(0, cr2);
// Course temp2 = (Course)coursesToSelect.get(0);
// // Course temp3 = (Course)coursesToSelect.get(1);
// System.out.println("添加了課程:"+temp2.id+":"+temp2.name);
// System.out.println("添加了課程:"+temp3.id+":"+temp3.name);
// coursesToSelect.add(cr1);
// Course temp0 = (Course)coursesToSelect.get(2);
// System.out.println("添加了課程:"+temp0.id+":"+temp0.name);
Course[] course = {new Course("3","操作系統(tǒng)"),new Course("4", "匯編語言")};
coursesToSelect.addAll(Arrays.asList(course));
// Course temp3 = (Course)coursesToSelect.get(3);
// Course temp4 = (Course)coursesToSelect.get(4);
// System.out.println("添加了兩門課程:"+temp3.id+":"+temp3.name+";"+temp4.id+":"+temp4.name);
Course[] course2 = {new Course("5", "Java語言"),new Course("6", "離散數(shù)學(xué)")};
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);
}
/**
* 通過for each方法訪問幾何元素
* @param args
*/
public void testForEach() {
System.out.println("有如下課程待選(通過foreach方法):");
for(Object obj:coursesToSelect) {
Course cr = (Course)obj;
System.out.println("課程:"+cr.id+":"+cr.name);
}
}
public void testForEachSet(Student student) {
for(Course cr:student.courses) {
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é)生對(duì)象
Student student = new Student("1","小明");
System.out.println("歡迎學(xué)生:"+student.name+"選課");
//創(chuàng)建一個(gè)Scanner對(duì)象,用來接收從鍵盤輸入法人課程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);
}
}
}
//打印輸出學(xué)生所選的課程
st.testForEachSet(student);
}
}
2019-03-18
樓上正解
2019-02-17
建議先不要糾結(jié)這個(gè)問題,知道Set是無序即可,因?yàn)槠鋬?nèi)部實(shí)現(xiàn)原理是哈希表,需要數(shù)據(jù)結(jié)構(gòu)的知識(shí)
2019-02-11
我也是。。。
2019-01-26
我也一樣,程序運(yùn)行輸出順序就是和輸入順序永遠(yuǎn)相同。
但是,用斷點(diǎn)調(diào)試的時(shí)候輸出的順序就是無序的了!