多維數組java
A. java 多維數組
public class TestArray {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] matrix = new int[5][];
for(int i = 0; i < 5; i ++) {
matrix[i] = new int[i];
System.out.print("matrix[" + i + "]is<");
for(int j = 0; j < i; j++) {
matrix[i][j] = i * j;
System.out.print(matrix[i][j]);
if(i - j > 1) {
System.out.print(",");
}
}
System.out.println(">");
}
}
}
順便說說,二樓的少了個逗號 (*^__^*)
B. java多維數組怎麼復制
網上有這樣的一個例子
程序如下:
class C{
public static void main(String args[]){
int a[][] = {{1,2,3},{4,5,6}};
int b[][] = new int[a.length][a[0].length];
System.array(a,0,b,0,a.length); //通過array()函數拷貝數組
b[0][0] = 4; //改變數組b[0][0]的值
System.out.println("a[][]");
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println("b[][]");
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
System.out.print(b[i][j]+" ");
}
System.out.println();
}
}
列印的結果如下:
a[][]
4 2 3
4 5 6
b[][]
4 2 3
4 5 6
而如果把上述程序中的二維數組改為一維數組,結果卻不同。程序如下:
class C{
public static void main(String args[]){
int a[] = {1,2,3};
int b[] = new int[a.length];
System.array(a,0,b,0,a.length); //通過array()函數拷貝數組
b[0] = 4; //改變數組b[0]的值
System.out.println("a[]:");
for(int i=0;i<3;i++){
System.out.print(a[i] + " ");
}
System.out.println();
System.out.println("b[]:");
for(int i=0;i<3;i++){
System.out.print(b[i] + " ");
}
}
}
列印結果如下:
a[]:
1 2 3
b[]:
4 2 3
在第一個程序中,用b[0][0] = 4;只改變了數組b[0][0]的值,可是結果卻是數組a[0][0]的值也發生了改變。而在第二個程序中,由於是一個一維數組,改變了b[0]的 值,a[0]的值卻並沒有受到影響,所以問題可能就出在數組的維數上。第一個程序中的a 是一個數組的數組(java 中沒有多維數組的概念,只有數組的數組),同理b 也是,那麼a 含有兩個元素,第一個是指向(1,2,3) 這個數組的引用,第二個是指向(4,5,6)這個數組的引用,而arrayCopy 就是負責把數組的內容 過去的,因此 a 的內容 (2 個引用) 被 到b 中去了,因此你對b[0][0] 做修改,a 也會同樣跟著變化.
在JAVA裡面,可以用復制語句「A=B」給基本類型的數據傳遞值,但是如果A,B是兩個同類型的數組,復制就相當於將一個數組變數的引用傳遞給另一個數組;如果一個數組發生改變,那麼引用同一數組的變數也要發生改變。
JAVA中復制數組元素值的的方法指深拷貝
1 使用for循環,將數組的每個元素復制(需要將每個對象調用clone方法,才能實現真正的復制)
2 使用clone方法,得到數組的值,而不是引用
3 使用System.array方法
注意:
1.上面方法中array效率較高。
2. 以上所說的拷貝數組的方法,只是針對一維數組,對於多維數組,要在每一維用以上方法進行復制才能實現復制數組元素的值而不是引用。
3. clone 和 array對二維數組進行復制時,是淺拷貝, 即
Object[][] aa;
Object[][] bb = aa.clone();
//or bb=System.array(aa,0,bb, 0, bb.length);
則:
boolean b1 = ( aa[i] == bb[i] ); //false
boolean b2 = (aa[i][j] == bb[i][j]); //true, 可見數組元素只復制了引用。新舊數組指向相同的內存地址,(不論對象數組,還是基本類型數組)。
/**
* 數組的淺拷貝是指數組拷貝時,只拷貝了數組的地址,新舊數組指向同一數據
* 數組的深拷貝,不論數據是基本類型,還是對象類型,都是一樣的。
* 對數組來說,不一樣的地方在於,當為數組元素賦值時,基本類型值傳遞,對象類型是引用傳遞。
*
*/
Object[] a = new Object[]{"String", new Integer(1)};
Object[] b = a;
/**
* 數組深拷貝的方法有如下幾種:
* 1。 調用clone
* 2。 調用System.array
* 以上兩種對基
C. java8中如何動態遍歷動態多維數組
有兩種實現方法:
可以用List數組來實現
可以用map來實現
方法一:用map來實現
比如要創建一個1行、3列的數組,實現方法如下:
public static void main(String[] args) throws CloneNotSupportedException { Map<Double, List<Double>> myMap = create(1, 3);}public static Map<Double, List<Double>> create(double row, double column) { Map<Double, List<Double>> doubleMap = new HashMap<Double, List<Double>>(); for (double x = 0; x < row; x++) { for (double y = 0; y < column; y++) { doubleMap.put(x, new ArrayList<Double>()); } } return doubleMap;}
方法二:
可以用List數組來實現
publicstaticvoidmain(Stringargs[]){
//list作為動態二維數組
List<List<String>>list=newArrayList();
List<String>a1=newArrayList<String>();
List<String>a2=newArrayList<String>();
List<String>a3=newArrayList<String>();
list.add(a1);
list.add(a2);
list.add(a3);
a1.add("string1ina1");
a1.add("string2ina1");
a2.add("string1ina2");
a3.add("string1ina3");
a3.add("string2ina3");
for(inti=0;i<list.size();++i){
for(intj=0;j<list.get(i).size();++j)
System.out.println(list.get(i).get(j));
}
}
D. java支持多維數組嗎最多支持多少
Java中沒有
多維數組
的概念,所以也就沒有可以支持多少這個說法!
但是Java是可以實現多維數組的功能!
具體數量沒有限制!
Java
實現多維數組的原理,其實很簡單!簡單到只把數組里的數組看成一個對象而已!
一個數組集合你想放多少對象都可以,如果你不關心會性能的話!
E. 關於java中多維數組的問題
不對的,對於已聲明的數組來說,它的名字代表的是該數組的首地址,不能那樣賦值的。
直接寫成:int a[][] = {{1,2,3},{4,5,6}}; 就好了。
F. JAVA的多維數組的實質是什麼
C語言中無論幾維數組都是按行連續存放的...JAVA作為面向對象的語言.在new一個數組時..會在常量池或堆中生成一個對象..數組中存放的只是該對象的引用..指向對象的首地址 一維數組里存放的是第二維數組里引用的引用...以此類推 因為JAVA的內存管理機制所以我們一般不關心它的存儲問題 具體的分布方式我也不知道 即使是哈希碼也只是表示在JVM中的虛擬地址 不是物理地址 但是據說也是連續的 希望有幫助
G. java多維數組
int sum=0;
for(int i = 0; i<a[0].length; i){
sum = sum + a[0][i];
}
System.out.println(sum);
多維數組,其實就是多個一維數組結合起來的,數組裡面套數組,把一、二維數組弄明白,其他就簡單了
H. java中如何定義多維數組
下面介紹一下ArrayList作為Java動態數組的用法。
1.語法:add()是添加一個新的元素,remove()刪除一個元素,size()獲得ArrayList的長度。ArrayList的下標是從0開始。
2.示例代碼package wang48.jiaocheng;
import java.util.ArrayList;
public class JavaArrayList{public static void main(String[]args){//Java動態數組的初始化
ArrayList al=new ArrayList();
//向Java動態數組中添加數據al.add(a);al.add(b);al.add(c);//輸出Java動態數組
for(int i=0;i<al.size();i++){String alEach=(String)al.get(i);
System.out.println(alEach);}//刪除數組中的某個元素,刪除第二個元素
al.remove(1);
//修改Java動態數組,把新的元素放到第二個位置
al.add(1,2);////輸出Java動態數組
I. java怎麼理解多維數組
3維數組還是很容易理解的
先講2維數組,很直接的就能聯想到一個平面結構的行、列
變成3維後 就成了一個立方體結構,如同常見的玩具魔方一樣,相對於2維,就多了一個層的概念
int SanWei[][][]={{{5,2,3},{4,5,6}},{{87,7,5},{10,11,12}}};
第一層int SanWei[0][*][*] 是一個二維數組如下
int SanWei[0][0][*] :{5,2,3}
int SanWei[0][1][*] :{4,5,6}
第二層int SanWei[1][*][*] 是一個二維數組如下
int SanWei[1][0][*] :{87,7,5}
int SanWei[1][1][*] :{10,11,12}
用簡單的平面、和立方體來形容會比較容易理解,畫圖太麻煩了,你自己手繪一下就行
2、3維比較容易理解,4維 可以借用3維立方體來理解,魔方的每一塊 都是一個小的魔方,再高維的話,我的想像力不夠用了。轉載,僅供參考。
J. java 的多維數組的應用
您好,提問者:
比如省份、縣,這就可以用到二維數據。
publicclassArrays{
publicstaticvoidmain(String[]args){
String[][]arr={{"濟南市","濱州市","德州市"},{"沈陽市","長春市"}};
//這里arr[0]表示山東省,1表示東北省
//比如你要得到山東省就遍歷
System.out.println("山東省有:");
for(inti=0;i<arr.length;i++){
System.out.print(arr[0][i]+"");
}
}
}