第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

Set無序性問題

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Scanner;


public class TestSet {

? ? public List<Course> courseToSelect;

? ? public TestSet() {

? ? this.courseToSelect=new ArrayList<Course>();

? ? }

? ??

public void testAdd() {

?

Course cr1=new Course("1","數(shù)據(jù)結(jié)構(gòu)");//創(chuàng)建一個課程對象

//添加方法一

courseToSelect.add(cr1);//通過調(diào)用add方法添加到被選課程List中去

Course temp=(Course) courseToSelect.get(0);/*List與數(shù)組一樣起

始位置都是0,剛剛只插入了一個元素。當(dāng)對象被添加進(jìn)集合中時會忽略它本來的類型,被

當(dāng)做Object類,因此當(dāng)它從集合中取出時也是一個Object類,所以要用(Course)將

它強(qiáng)制轉(zhuǎn)化為Course類.

*/

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

?

?

?

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

//添加方法2

courseToSelect.add(0, cr2);/*這樣可以把第0位置cr1擠到第1位置去*/

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

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

?

?

/* courseToSelect.add(cr1);//此處驗證List中元素可以重復(fù)

Course temp0=(Course) courseToSelect.get(2);

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

?


? ? ?Course[] cr3= {new Course("3","離散數(shù)學(xué)"),new Course("4","匯編語言")};

? ? ?//插入方法3將用Arrays.asList()方法把數(shù)組cr3變成數(shù)組序列,并插入數(shù)組序列中

? ? ?courseToSelect.addAll(Arrays.asList(cr3));

? ? ?Course temp3=(Course) courseToSelect.get(2);

? ? ?Course temp4=(Course) courseToSelect.get(3);

? ? ?//System.out.println("添加了兩門新課程:"+temp3.id+":"+temp3.name+

? ? // ?";"+temp4.id+":"+temp4.name);

? ? ?

? ? ?

? ? ?Course[] cr4= {new Course("5","高等數(shù)學(xué)"),new Course("6","大學(xué)英語")};

? ? ?//插入方法4,將cr4插入到數(shù)組序列的指定位置

? ? ?courseToSelect.addAll(2,Arrays.asList(cr4));

? ? ?Course temp5=(Course) courseToSelect.get(4);

? ? ?Course temp6=(Course) courseToSelect.get(5);

? ? // System.out.println("添加了兩門新課程:"+temp5.id+":"+temp5.name+

? ?// ?";"+temp6.id+":"+temp6.name);

}

?

/**

? ? ? * 通過for each方法訪問集合元素

? ? ? * for each 方法實際上是迭代器方法一種簡便的寫法

? ? ? * 哈

? ? ? * */

? ? ?public void testForEach() {

? ? System.out.println("有如下課程可供選擇(通過for each方法訪問):");

? ? for(Object obj:courseToSelect) {//這里為什么要用Object類前面講過

? ? Course cr=(Course) obj;

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

? ? }

? ??

? ??

? ? ?}

?

? ? ?

? ??

public static void main(String[] args) {

// TODO Auto-generated method stub

? ? ? ? TestSet st=new TestSet();

? ? ? ? st.testAdd();

? ? ? ? st.testForEach();

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

? ? ? ? System.out.println("歡迎學(xué)生:"+student.name+"選課!");

? ? ? ? //創(chuàng)建一個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.courseToSelect) {

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

? ? ? ? //student.course.add(null);//Set中可以添加空對象

? ? ? ? student.course.add(cr);//測試Set是否可以重復(fù)添加。

? ? ? ? student.course.add(cr);//course是Set的對象,此操作為把符合課程ID的元素添加到Set中去。

? ? ? ? }

? ? ? ? }

? ? ? ? }

? ? ? ? //打印輸出,學(xué)生所選的課程!

? ? ? ? st.testForEachForSet(student);

}

public void testForEachForSet(Student student) {

System.out.println("共選擇了:"+student.course.size()+"門課程!");//結(jié)果表明Set中可以添加重復(fù)的元素不會報錯,但重復(fù)元素只記錄一次。

? ? for(Course cr:student.course) {/*循環(huán)遍歷Set中的每一個元素只能用foreach方法和iterator方法

? ? ? ? ? ?不能調(diào)用get方法,因為Set本身無序不可能查詢索引位置上的指定元素只能一個個迭代出來,因為Set無序所以每一次迭代的結(jié)果

? ? ? ? ? ?都不同。*/

? ? ? ? ? ? System.out.println("選擇了課程:"+cr.id+":"+cr.name);

? ? ? ? ? ?}

? ? ?}

? ? ?


}

我的代碼跟著老師一步步打的應(yīng)該沒問題,但是運行時輸入同樣的課程ID每次結(jié)果都相同,例如“4 1 2”,每次都是對應(yīng)的課程按順序出來,

Set不應(yīng)該是無序的嗎,還是說因為Eclipse版本的不同Set的功能有所變化,我的eclipse版本是2017版的。

正在回答

4 回答

是否是Set類型取決于 Student.java?下,你是否給學(xué)生類定義了Set類。

Student.java中Student類代碼如下?注意加粗部分!



import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

/**

?* 學(xué)生類

?* @author lenovo

?*

?*/

public class Student {


public String id;

public String name;

//給Set添加了泛型

public Set<Course>courses;

public Student(String id,String name) {

this.id = id;

this.name = name;

this.courses = new HashSet<Course>();

}??

}


0 回復(fù) 有任何疑惑可以回復(fù)我~

我記得有點模糊,我們期末實訓(xùn)的時候有個老師說Set集合按照哈希算法進(jìn)行存儲,如果一個值的哈希算法的出來的值是固定不變的,那就不會改變存儲的位置。不是說這次輸入1,2,3得出來3,2,1下次輸入1,2,3的出來的就是1,3,2,而是因為他的哈希值沒有變,存儲的位置也就沒有變。如果說錯了也請大神進(jìn)行指正,謝謝哈。

0 回復(fù) 有任何疑惑可以回復(fù)我~

我也是這樣的結(jié)果,每次輸出的結(jié)果都是同樣的無序。比如說我輸入1、2、3,每次都是輸出2、1、3

0 回復(fù) 有任何疑惑可以回復(fù)我~

多試幾次,可能你運氣比較好,順序是一樣的

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕移動8447653 提問者

這跟運氣沒關(guān)系吧,我大概輸了7,8次了每次順序都一樣的這概率也太低了吧,有沒有可能是版本的問題? 還有我Map表輸出的結(jié)果也永遠(yuǎn)是順序的。
2018-07-05 回復(fù) 有任何疑惑可以回復(fù)我~
#2

超時空的狩獵 回復(fù) 慕移動8447653 提問者

我也是
2018-07-19 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
Java入門第三季
  • 參與學(xué)習(xí)       409775    人
  • 解答問題       4546    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進(jìn)入課程

Set無序性問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號