Java8 教程第十八章之操作Array

本套JAVA8教程由于是有英文翻譯過來的,如果有翻譯不對(duì)的地方還請(qǐng)多多包涵赶站。

本節(jié)課先簡(jiǎn)單的介紹下Java8有哪些新特性,對(duì)于Java6/7版本做出哪些更改.那廢話不多說,趕緊開始今天的課程吧.

在本文中,我們將向您展示一些加入Java Array的方法可柿。

Apache Commons Lang – ArrayUtils
Java API
Java 8 Stream

Apache Commons Lang – ArrayUtils

最簡(jiǎn)單的方法是添加Apache Commons Lang庫降宅,并使用ArrayUtils麦锯。
addAll用于連接數(shù)組坛善。
此方法支持基本類型和對(duì)象類型數(shù)組澎媒。

public static void main(String[] args) {

        String[] s1 = new String[]{"a", "b", "c"};
        String[] s2 = new String[]{"d", "e", "f"};
        String[] result = ArrayUtils.addAll(s1, s2);
        System.out.println(Arrays.toString(result));
        int [] int1 = new int[]{1,2,3};
        int[] int2 = new int[]{4,5,6};
        int[] result2 = ArrayUtils.addAll(int1, int2);
        System.out.println(Arrays.toString(result2));
    }

輸出

[a, b, c, d, e, f]
[1, 2, 3, 4, 5, 6]

Java API

純Java API示例,支持原始類型和泛型類型波桩。

  public static void main(String[] args) {

        String[] s1 = new String[]{"a", "b", "c"};
        String[] s2 = new String[]{"d", "e", "f"};
        String[] s3 = new String[]{"g", "h", "i"};

        String[] result = joinArrayGeneric(s1, s2, s3);

        System.out.println(Arrays.toString(result));

        int[] int1 = new int[]{1, 2, 3};
        int[] int2 = new int[]{4, 5, 6};
        int[] int3 = new int[]{7, 8, 9};

        int[] result2 = joinArray(int1, int2, int3);

        System.out.println(Arrays.toString(result2));

    }

    static <T> T[] joinArrayGeneric(T[]... arrays) {
        int length = 0;
        for (T[] array : arrays) {
            length += array.length;
        }

        //T[] result = new T[length];
        final T[] result = (T[]) Array.newInstance(arrays[0].getClass().getComponentType(), length);

        int offset = 0;
        for (T[] array : arrays) {
            System.arraycopy(array, 0, result, offset, array.length);
            offset += array.length;
        }

        return result;
    }

    static int[] joinArray(int[]... arrays) {
        int length = 0;
        for (int[] array : arrays) {
            length += array.length;
        }

        final int[] result = new int[length];

        int offset = 0;
        for (int[] array : arrays) {
            System.arraycopy(array, 0, result, offset, array.length);
            offset += array.length;
        }

        return result;
    }

輸出

[a, b, c, d, e, f, g, h, i]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Java 8 Stream

Java 8 Stream連接數(shù)組的示例戒努。

 public static void main(String[] args) {

        String[] s1 = new String[]{"a", "b", "c"};
        String[] s2 = new String[]{"d", "e", "f"};
        String[] s3 = new String[]{"g", "h", "i"};
        //join object type array
        String[] result = Stream.of(s1, s2, s3).flatMap(Stream::of).toArray(String[]::new);
        System.out.println(Arrays.toString(result));
        int [] int1 = new int[]{1,2,3};
        int[] int2 = new int[]{4,5,6};
        int[] int3 = new int[]{7,8,9};
        //join 2 primitive type array
        int[] result2 = IntStream.concat(Arrays.stream(int1), Arrays.stream(int2)).toArray();
        //join 3 primitive type array, any better idea?
        int[] result3 = IntStream.concat(Arrays.stream(int1), 
            IntStream.concat(Arrays.stream(int2), Arrays.stream(int3))).toArray();

        System.out.println(Arrays.toString(result2));

        System.out.println(Arrays.toString(result3));

    }

輸出

[a, b, c, d, e, f, g, h, i]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

以上就是三種操作數(shù)組的方式, 如果還有別的更好的方式歡迎留言哦

歡迎留言!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市镐躲,隨后出現(xiàn)的幾起案子储玫,更是在濱河造成了極大的恐慌,老刑警劉巖萤皂,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撒穷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡裆熙,警方通過查閱死者的電腦和手機(jī)端礼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門禽笑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛤奥,你說我怎么就攤上這事佳镜。” “怎么了凡桥?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵蟀伸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我缅刽,道長(zhǎng)啊掏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任衰猛,我火速辦了婚禮迟蜜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腕侄。我一直安慰自己小泉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布冕杠。 她就那樣靜靜地躺著微姊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪分预。 梳的紋絲不亂的頭發(fā)上兢交,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音笼痹,去河邊找鬼配喳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凳干,可吹牛的內(nèi)容都是我干的晴裹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼救赐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼涧团!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起经磅,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤泌绣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后预厌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阿迈,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年轧叽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苗沧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刊棕。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崎页,靈堂內(nèi)的尸體忽然破棺而出鞠绰,到底是詐尸還是另有隱情,我是刑警寧澤飒焦,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布蜈膨,位于F島的核電站,受9級(jí)特大地震影響牺荠,放射性物質(zhì)發(fā)生泄漏翁巍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一休雌、第九天 我趴在偏房一處隱蔽的房頂上張望灶壶。 院中可真熱鬧,春花似錦杈曲、人聲如沸驰凛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恰响。三九已至,卻和暖如春涌献,著一層夾襖步出監(jiān)牢的瞬間胚宦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工燕垃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枢劝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓卜壕,卻偏偏與公主長(zhǎng)得像您旁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轴捎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 前言:Java 8 已經(jīng)發(fā)布很久了鹤盒,很多報(bào)道表明Java 8 是一次重大的版本升級(jí)。在Java Code Geek...
    糖寶_閱讀 1,321評(píng)論 1 1
  • Java 8自Java 5(發(fā)行于2004)以來最具革命性的版本轮蜕。Java 8 為Java語言昨悼、編譯器蝗锥、類庫跃洛、開發(fā)...
    誰在烽煙彼岸閱讀 887評(píng)論 0 4
  • Java 8自Java 5(發(fā)行于2004)以來最具革命性的版本。Java 8 為Java語言终议、編譯器汇竭、類庫葱蝗、開發(fā)...
    huoyl0410閱讀 616評(píng)論 1 2
  • 目錄結(jié)構(gòu) 介紹 Java語言的新特性2.1 Lambdas表達(dá)式與Functional接口2.2 接口的默認(rèn)與靜態(tài)...
    夜風(fēng)月圓閱讀 460評(píng)論 0 2
  • 個(gè)人專題目錄 Apache Commons包含了很多開源的工具,用于解決平時(shí)編程經(jīng)常會(huì)遇到的問題细燎,減少重復(fù)勞動(dòng)两曼。下...
    Java及SpringBoot閱讀 3,344評(píng)論 0 5