黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 實(shí)例講解Java數(shù)組擴(kuò)容

實(shí)例講解Java數(shù)組擴(kuò)容

更新時(shí)間:2020-11-05 17:41:16 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1248次

當(dāng)數(shù)組定義完成后,數(shù)組存儲(chǔ)元素的個(gè)數(shù)就確定了,因?yàn)樵诙x數(shù)組時(shí),要指定數(shù)組的長(zhǎng)度. 如果想要在數(shù)組中存儲(chǔ)更多的數(shù)據(jù), 就需要對(duì)數(shù)組擴(kuò)容。本文就來(lái)為大家介紹Java數(shù)組擴(kuò)容的相關(guān)知識(shí)。


想要掌握J(rèn)ava數(shù)組擴(kuò)容,必須要先了解數(shù)組擴(kuò)容的一些特性:

1)Java數(shù)組對(duì)象的大小是固定不變的,數(shù)組對(duì)象是不可擴(kuò)容的。

2)利用數(shù)組復(fù)制方法可以變通的實(shí)現(xiàn)數(shù)組擴(kuò)容。

3)System.arraycopy()可以復(fù)制數(shù)組。

4)Arrays.copyOf()可以簡(jiǎn)便的創(chuàng)建數(shù)組副本。

5)創(chuàng)建數(shù)組副本的同時(shí)將數(shù)組長(zhǎng)度增加就變通的實(shí)現(xiàn)了數(shù)組的擴(kuò)容。


package com.wkcto.chapter03.demo01;

import java.util.Arrays;

/**

* 數(shù)組擴(kuò)容

* @author 蛙課網(wǎng)

*

*/

public class Test06 {

public static void main(String[] args) {

// m1(); //完全手動(dòng)擴(kuò)容

// m2(); //數(shù)組復(fù)制調(diào)用 了System.arraycopy(0方法

m3(); //調(diào)用 Arrays.copyOf(0實(shí)現(xiàn)擴(kuò)容

}

private static void m3() {

// 定義長(zhǎng)度為5的數(shù)組

int[] data = { 1, 2, 3, 4, 5 };

// 想要在數(shù)組中存儲(chǔ)更多的數(shù)據(jù),需要對(duì)數(shù)組擴(kuò)容

//Arrays工具類(lèi)copyOf(源數(shù)組, 新數(shù)組的長(zhǎng)度) 可以實(shí)現(xiàn)數(shù)組的擴(kuò)容

data = Arrays.copyOf(data, data.length*3/2);

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

}

private static void m2() {

//定義長(zhǎng)度為5的數(shù)組

int [] data = {1,2,3,4,5};

//想要在數(shù)組中存儲(chǔ)更多的數(shù)據(jù),需要對(duì)數(shù)組擴(kuò)容


//(1) 定義一個(gè)更大的數(shù)組

int [] newData = new int[data.length * 3 / 2] ; //按1.5倍大小擴(kuò)容


//(2)把原來(lái)數(shù)組的內(nèi)容復(fù)制到新數(shù)組中

//把src數(shù)組從srcPos開(kāi)始的length個(gè)元素復(fù)制到dest數(shù)組的destPos開(kāi)始的位置

// System.arraycopy(src, srcPos, dest, destPos, length);

System.arraycopy(data, 0, newData, 0, data.length);

//arraycopy()方法使用了native修飾,沒(méi)有方法體, 該方法的方法體可能是由C/C++實(shí)現(xiàn)的

//JNI,Java native Interface技術(shù),可以在Java語(yǔ)言中調(diào)用其他語(yǔ)言編寫(xiě)的代碼


//(3) 讓原來(lái)的數(shù)組名指向新的數(shù)組

data = newData;

//

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

}

private static void m1() {


//1)定義長(zhǎng)度為5的數(shù)組

int [] data = {1,2,3,4,5};

//2)想要在數(shù)組中存儲(chǔ)更多的數(shù)據(jù),需要對(duì)數(shù)組擴(kuò)容

//(1) 定義一個(gè)更大的數(shù)組

int [] newData = new int[data.length * 3 / 2] ; //按1.5倍大小擴(kuò)容

//(2)把原來(lái)數(shù)組的內(nèi)容復(fù)制到新數(shù)組中

for( int i = 0 ; i < data.length; i++){

newData[i] = data[i];

}

//(3) 讓原來(lái)的數(shù)組名指向新的數(shù)組

data = newData;

//

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

}

}


在編寫(xiě)一些非參學(xué)習(xí)算法時(shí),例如DP和HDP,經(jīng)常會(huì)遇到生成新簇的情形,這種情況下,數(shù)組的空間就不夠用了,需要對(duì)原來(lái)的數(shù)組進(jìn)行擴(kuò)容。

例如:

int K=10;

int[] tables = new int[K]; //可以看出該數(shù)組最多可存儲(chǔ)10個(gè)元素

for (int i = 0; i<k; p="" {<="">

tables [i] = i; //數(shù)組賦值

}


如何讓上面已經(jīng)賦值的數(shù)組擴(kuò)展到可存儲(chǔ)11個(gè)元素、12個(gè)元素等等呢?

針對(duì)二維數(shù)組,如下:

int C =10;

int[][] tablesNum = new int[C][10];

for (int i = 0; i < tablesNum.length; i++) {

for (int j = 0; j < tablesNum[i].length; j++) {

tablesNum[i][j] = i*j; //二維數(shù)組賦值

}

}


可以看出該二維數(shù)組最多存儲(chǔ)100個(gè)元素,如何讓其存儲(chǔ)更多的元素呢?

解決程序

如下我提供了針對(duì)一維數(shù)組和二維數(shù)組擴(kuò)容的方法,主要使用的是:System.arraycopy()方法。

//將數(shù)組放大,確保不越界

public static int[] ensureCapacity(int[] arr,int i) {

int length = arr.length;

int[] arr2 = new int[length+i];

System.arraycopy(arr, 0, arr2, 0, length);

return arr2;

}

//將數(shù)組放大,確保不越界

public static int[][] ensureCapacity(int[][] array,int i,int j) {

int[][] arr = new int[array.length +i][array[0].length +j];

//擴(kuò)展

for(int c = 0; c< array.length; c++) {

//數(shù)組拷貝

System.arraycopy(array[c], 0, arr[c], 0, array[c].length);

}

return arr;

}


以上就是Java數(shù)組擴(kuò)容的相關(guān)知識(shí),通過(guò)本文中的實(shí)例講解,大家對(duì)Java數(shù)組擴(kuò)容的疑問(wèn)應(yīng)該一掃而空了。想要學(xué)習(xí)更多的Java數(shù)組相關(guān)知識(shí)可以觀看本站的Java基礎(chǔ)教程,全方位為你打好Java基礎(chǔ)。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产日韩精品一区二区在线观看 | 午夜影剧院 | 日本久久综合视频 | 亚洲精品日韩专区在线观看 | 亚洲精品456播放 | 一个人看的www在线播放 | 亚洲精品成人 | 欧洲一级毛片免费 | 午夜天堂| 国产日韩91 | 五月综合激情 | 成人网18免费看 | 国产成人精品一区二区免费 | 麻豆精品成人免费国产片 | 三级黄色高清视频 | 中文字幕2区 | 狠狠婷婷| 中文字幕网站在线观看 | 亚洲激情校园 | 免费黄色欧美 | 成人欧美网站免费 | 日本三级视频网站 | 亚欧色视频在线观看免费 | 国内小情侣一二三区在线视频 | 亚洲视频精品在线观看 | 999久久久国产精品 999热成人精品国产免 | 毛片黄| 国产欧美日韩一区二区三区 | 天天操夜夜操美女 | 香蕉视频在线观看网站 | 国产日韩欧美在线 | 蜜臀91精品国产免费观看 | 国产成人在线免费观看 | 国产男女 爽爽爽爽视频 | 亚洲人成高清毛片 | 一个人看的www高清在线观看 | 福利网址在线观看 | 好男人社区成人影院在线观看 | 久久综合九色欧美综合狠狠 | 青草草在线观看免费视频 | 欧美日韩一本 |