亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有關JAVA 數組排序的方法,對Arrays.sort()方法有疑問?

有關JAVA 數組排序的方法,對Arrays.sort()方法有疑問?

慕工程0101907 2018-07-11 13:03:55
此API規定實體bean要實現comparable接口并重寫compareTo方法,為什么不將API改為Arrays.sort(Compatable[] com)呢?
查看完整描述

2 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

寫成Compatable[]的參數,sort方法就只能接收對象為參數,而簡單類型就不能用了,如

int [] a ={1,2,3,6,4,3,23,5,6,7,9};

Arrays.sort(a);//a = [1, 2, 3, 3, 4, 5, 6, 6, 7, 9, 23]


查看完整回答
反對 回復 2018-07-15
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

真正的原因是因為Java數組的一個特性導致不得不這樣設計。簡單來說,Java數組的運行時類型不是由其元素類型決定,而是由其實例化時的類型決定的。

比如下面這個數組:

Object[] arr = {    "hello", "world"};

它的實際類型就是Object[](大括號的簡寫法相當于Object[] arr = new Object[] {...};,因此其實例化類型為Object[])。雖然它里面的元素全部都是字符串,按照直覺你可能會覺得可以把它轉換為String[]數組,但其實不然,下面的轉換在運行時將會報錯:

String[] arr2 = (String[]) arr;
注:如果反過來,將一個String[]數組轉換為Object[]數組則是可行的,因為前者是后者的子類型。

所以這會導致什么問題?如果Arrays.sort()聲明為接收Comparable[]數組,那么就要求程序員在使用的時候必須一開始就為該數組實例化為一個Comparable[]數組或其兼容數組,而不能等到調用sort()方法的時候再臨時轉換,因為就像前面的例子那樣,這種轉換很有可能會失敗。


查看完整回答
反對 回復 2018-07-15
  • 2 回答
  • 0 關注
  • 410 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號