數(shù)組

  1. 數(shù)組為什么特殊
    數(shù)組是一種效率最高的存儲和隨機訪問對象引用序列的方式.
    因為是一個簡單的線性序列, 所以使得元素訪問非常快.
    數(shù)組之所有優(yōu)于泛型之前的容器, 是因為他可以創(chuàng)建一個數(shù)組去持有某種具體類型.
    隨著自動包裝機制和泛型的出現(xiàn), 容器已經(jīng)可以與數(shù)組一樣方便的保存基本類型和具體類型的對象了.

  2. 數(shù)組是第一級對象
    無論使用哪種類型的數(shù)組, 數(shù)組標識符其實只是一個引用, 指向在堆中創(chuàng)建的一個真實對象.這個對象用于保存指向其他對象的引用.
    對象數(shù)組保存的是引用, 而基本類型數(shù)組保存的是基本類型的值.

  3. 返回一個數(shù)組
    C++不能返回一個數(shù)組, 只能返回一個數(shù)組的指針, 這樣容易造成內(nèi)存泄漏.

  4. 多維數(shù)組
    數(shù)組中構成矩陣的每個向量都可以具有任意的長度.(這被稱為粗糙數(shù)組)

  5. 數(shù)組與泛型
    不能實例化具有參數(shù)化類型的數(shù)組.
    我們不能創(chuàng)建實際的持有泛型的數(shù)組對象, 但是我們可以創(chuàng)建非泛型的數(shù)組, 然后將其轉(zhuǎn)型.

  6. 創(chuàng)建測試數(shù)據(jù)
    本節(jié)介紹的工具既可以用數(shù)值或者對象來填充數(shù)組.

6.1

Arrays.fill(數(shù)組, 值)
這個方法是用同一個值填充各個位置, 針對對象而言, 就是復制同一個引用進行填充.
Arrays.fill(數(shù)組,begin,end,值)[begin, end]

6.2 數(shù)據(jù)生成器

如果某個工具使用了generator, 那么你就可以通過選擇Generator的類型來創(chuàng)建任何類型的數(shù)據(jù).
這里有兩個工具類:
1)CountingGenerator: 生成基本類型的數(shù)組, 計數(shù)
2)RandomGenerator: 隨機生成數(shù)來填充數(shù)組

6.3 從Generator中創(chuàng)建數(shù)組

第一個工具: 使用任意的Generator來產(chǎn)生Object子類型的數(shù)組
第二個工具: 接收任意基本類型的包裝器類型數(shù)組, 并產(chǎn)生相應的基本類型數(shù)組
轉(zhuǎn)換器: 接收任意綠的包裝器對象數(shù)組, 并將其轉(zhuǎn)換為相應的基本類型數(shù)組.

  1. Arrays實用功能
    java.utils.Arrays有一套用于數(shù)組的Static實用方法
    equals(): 用于比較兩個數(shù)組是否相等
    fill(): 填充數(shù)組
    sort(): 對數(shù)組排序
    binarySearch(): 用于在已經(jīng)排序的數(shù)組中查找元素
    toString(): 產(chǎn)生數(shù)組的String表示
    hashCode(): 產(chǎn)生數(shù)組的散列碼
    Arrays.asList(): 接受任意的序列或數(shù)組作為參數(shù)

7.1 復制數(shù)組

System.arraycopy(a, b, c, d) 不會執(zhí)行自動包裝和拆包
a-源數(shù)組
b-復制a的b下標的元素
c-復制到的目標數(shù)組
d-復制的元素個數(shù)
這是在復制對象的引用, 被稱為淺復制

7.2 數(shù)組的比較

數(shù)組相等的條件是元素個數(shù)必須相等, 并且對應位置的元素也相等.
Arrays提供了重載后額equals()方法, 用來比較整個數(shù)組

7.3 數(shù)組元素的比較

這里使用策略設計模式
變化的是各種對象相互比較的方式
不變的是通用的排序算法
策略將變化的代碼封裝到單獨的類中(策略對象),然后將變化的策略對象傳給相同的排序算法

Java有兩種方式來提供比較功能.
第一種是實現(xiàn)java.lang.Comparable接口, 使自己的類具有比較的能力.
只有compareTo()一個方法, 接受一個Object對象作為參數(shù), 如果當前對象小于參數(shù)則返回負值, 如果相等則返回0, 如果當前對象大于參數(shù)則返回正值.
實現(xiàn)Comparable接口之后 用Arrays.sort()進行排序
第二種是創(chuàng)建一個實現(xiàn)Comparator接口的單獨的類.這個類有equal()和compare()方法.

7.4 數(shù)組排序

使用內(nèi)置的排序方法, 就可以對任意的基本類型數(shù)組排序, 也可以對任意的對象數(shù)組進行排序, 只要該對象實現(xiàn)了Comparable接口或者具有相關聯(lián)的Comparator.

7.5 在已排序的數(shù)組中查找

如果數(shù)組已經(jīng)排好序了, 就可以使用Arrays.binarySearch()執(zhí)行快速查找.
int location = Arrays.binarySearch(a,r)
a是數(shù)組 ,r是要查找的元素

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌甘畅,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疏唾,居然都是意外死亡蓄氧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門槐脏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喉童,“玉大人,你說我怎么就攤上這事顿天√寐龋” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵牌废,是天一觀的道長咽白。 經(jīng)常有香客問我,道長鸟缕,這世上最難降的妖魔是什么晶框? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮懂从,結(jié)果婚禮上授段,老公的妹妹穿的比我還像新娘。我一直安慰自己莫绣,他們只是感情好畴蒲,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著对室,像睡著了一般模燥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掩宜,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天蔫骂,我揣著相機與錄音,去河邊找鬼牺汤。 笑死辽旋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的檐迟。 我是一名探鬼主播补胚,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼追迟!你這毒婦竟也來了溶其?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤敦间,失蹤者是張志新(化名)和其女友劉穎瓶逃,沒想到半個月后束铭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡厢绝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年契沫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昔汉。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡懈万,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挤庇,到底是詐尸還是另有隱情钞速,我是刑警寧澤贷掖,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布嫡秕,位于F島的核電站,受9級特大地震影響苹威,放射性物質(zhì)發(fā)生泄漏昆咽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一牙甫、第九天 我趴在偏房一處隱蔽的房頂上張望掷酗。 院中可真熱鬧,春花似錦窟哺、人聲如沸泻轰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浮声。三九已至,卻和暖如春旋奢,著一層夾襖步出監(jiān)牢的瞬間泳挥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工至朗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屉符,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓锹引,卻偏偏與公主長得像矗钟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嫌变,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 數(shù)組為什么這么特殊 1.數(shù)組與其他容器之間的區(qū)別有三個方面:效率吨艇、類型和保存基本類型的能力。在Java中初澎,數(shù)組是一...
    zpauly閱讀 548評論 0 0
  • 數(shù)組是值的有序集合秸应。每個值叫做一個元素虑凛,而每個元素在數(shù)組中有一個位置,以數(shù)字表示软啼,稱為索引桑谍。 JavaScript...
    劼哥stone閱讀 1,130評論 6 20
  • 1.數(shù)組類型 數(shù)組是編程語言中最常見的一種數(shù)據(jù)結(jié)構,可用于存儲多個數(shù)據(jù)祸挪,每個數(shù)組元素存放一個數(shù)據(jù)锣披,通常可通過數(shù)組元...
    伊卡洛斯丶閱讀 482評論 0 3
  • 16.1 數(shù)組為什么特殊 數(shù)組與其他種類的容器之間的區(qū)別有三方面:效率贿条、類型和保存基本類型的能力雹仿。在java中,數(shù)...
    Lemon_Home閱讀 281評論 0 0
  • 簡介 這是一個Swift語言教程整以,基于最新的iOS 9胧辽,Xcode 7.3和Swift 2.2,會為你介紹Swif...
    張嘉夫閱讀 3,236評論 0 50