黑馬程式設計師之基礎測試

2022-04-07 18:02:23 字數 1666 閱讀 7162

如題:寫乙個集合,集合存放的是整形的資料。寫乙個幫助類,幫組類中有兩個static方法,乙個方法為從大到小的順序排序,乙個方法為從小到大的順序排序。實現上述的**。

剛一看覺得挺簡單的,整兩個靜態方法然後返回乙個相同型別的集合就行了。心裡老覺得不對,多讀了兩遍後我的想法變了:「寫乙個集合,集合存放的是整形的資料。寫乙個幫助類,幫組類中有兩個static方法」這前半段話沒問題。「乙個方法為從大到小的順序排序,乙個方法為從小到大的順序排序」這段話就有新想法了,更改資料集合本身而方法沒有返回值(這個在題目中隱藏的說法)如果可以有返回值的話就會說成「方法返回從大到小的順序排序」而不是「為」了。

遇到問題先度娘,還真有人問,也有人回答,我為什麼要在這裡重寫一下這個就是覺得網上的答案有點不對勁。

公升序是自帶的方法,而沒有降序排序。因為剛開始呼叫的時候是引用傳遞,導致在寫降序方法的時候,得到的降序集合只是個副本。找不到解決方案就開啟原始碼中的sort排序方法看,一看才明白原來要用迭代器。不過又有了疑問:為什麼從副本物件中得到的迭代器可以修改到原始位址裡的值呢?度娘好像也沒用了,檢視幫助文件才發現:「

」,我認為這句話說的意思是:允許迭代期間移除collection的某些元素。大家應該知道引用型別的改變通常是再建立乙個儲存空間儲存新的值,然後把這個新位址給以前的變數。而這裡說「移除」,我不知道它是又建立了乙個儲存空間把符合條件的資料放進去然後把位址給我,還是怎麼的,我只能確定一點--迭代器可以得到你想要的集合。

**如下:

view code

1

/**2

* 第9題:寫乙個集合,集合存放的是整形的資料。 寫乙個幫助類,幫組類中有兩個static方法,乙個方法為從大到小的順序排序,乙個方法為從小到大的順序排序。

3* 實現上述的**。4*

5*/6public

class

test9 ;

9 listnumlist=arrays.aslist(num);

1011

helper.printarrayvalue(numlist);

12helper.sortofasc(numlist);

13helper.printarrayvalue(numlist);

14helper.sortofdesc(numlist);

15helper.printarrayvalue(numlist);16}

17}1819

class

helper 35}

3637

/**38

* 對int陣列引數進行公升序排列

39*

40*

@param

args

41*/

42public

static

void sortofasc(listargs)

4546

/**47

* 順序列印出int陣列引數的所有成員

48*

49*

@param

args

50* int陣列

51*/

52public

static

void printarrayvalue(listargs)

56 system.out.print("\n");57}

58 }

黑馬程式設計師 c 基礎

windows phone 7手機開發 net培訓 期待與您交流!變數 變數本身被用來儲存特定型別的資料,可以根據需要隨時改變變數中所儲存的資料值。變數具有名稱,型別和值。變數代表著一塊記憶體空間,我們可以通過變數名稱向記憶體存 取資料,有變數就不需要記憶複雜的記憶體位址。資料型別 變數名 命名規範...

黑馬程式設計師 Windows Forms基礎

windows phone 7手機開發 net培訓 期待與您交流!1.文字框主要用於使用者輸入。text 屬性包括使用者輸入的值。還可以在設計時或執行時為文字屬性指定乙個值。2.分組框用作其他控制項的容器,將窗體上相似的專案組合在一起 3.核取方塊和單選按鈕允許使用者進行選擇。在一組單選按鈕中,只能...

黑馬程式設計師 HTML基礎

windows phone 7手機開發 net培訓 期待與您交流!html 基礎什麼是瀏覽器 注意 ie!瀏覽器,ie只是瀏覽器中的一種而已,還有像 firefox.opera,chrome 等等。像什麼 360瀏覽器,遨遊瀏覽器都是基於 ie核心的,只不過是換了乙個外殼而已,它們是用乙個叫 web...