小知識點系列:陣列與多維陣列
引言
一維陣列的建立和使用相對來說比較簡單,與一維陣列相比二維陣列就是陣列的陣列,三維陣列是二維陣列的陣列,可能很多開發剛接觸二維陣列就已經暈了,甚至如何遍歷輸出都沒有頭緒,下面我們先從一維陣列開始,然後就常用的二維陣列和三維陣列做簡單的梳理和總結。
一維陣列
一維陣列的快速定義和遍歷,整體理解成本還是比較低的,也是日常開發過程中比較常用的一種資料結構,相關使用方法本文不過多贅述。
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
// 一維陣列快速定義
// 1 2 3
int
[]
array
=
{
1
,
2
,
3
};
// 輸出一維陣列的長度
System
。
out
。
println
(
array
。
length
);
for
(
int
i
:
array
){
// 遍歷陣列中的每一位
System
。
out
。
println
(
i
);
}
}
}
二維陣列
二維陣列學習最開始遇到的障礙可能是二維陣列的長度是什麼長度,到底是橫向的length還是縱向的length,比如下圖的二維陣列twoDimArray。length是橫向的3還是縱向的4呢?如何遍歷這個二維陣列?
在這裡插入圖片描述
下面透過實際的例子來幫助我們如何理解二維陣列的定義、長度計算及其遍歷技巧:
twoDimArray。length:為二維陣列的行數,如果把每一行當做一個數組,即有多少個一維陣列
twoDimArray[0]。length:為二維陣列第1行的長度是多少,即第一個一維陣列的長度是多少
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
// 二維陣列快速定義
// 1 2 3
// 2 3 4
int
[][]
twoDimArray
=
{{
1
,
2
,
3
},
{
2
,
3
,
4
}};
// 行數是2
System
。
out
。
println
(
twoDimArray
。
length
);
// 第一行長度是3
System
。
out
。
println
(
twoDimArray
[
0
]。
length
);
// 二維陣列的遍歷
for
(
int
i
=
0
;
i
<
twoDimArray
。
length
;
i
++)
{
for
(
int
j
=
0
;
j
<
twoDimArray
[
i
]。
length
;
j
++){
System
。
out
。
println
(
twoDimArray
[
i
][
j
]);
}
}
}
}
三維陣列
經歷了一維陣列、二維陣列,三維陣列是儲存的元素是二維陣列的陣列,即數組裡面每一個元素都是一個二維陣列。相比較二維陣列,三維陣列在日常開發過程中使用的相對較少。
在這裡插入圖片描述
下面同樣透過具體的程式碼案例來看下三維陣列的定義和遍歷方式幫助我們理解三維陣列。
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
int
[][][]
threeDimArray
=
{
// 元素1,第1個二維陣列
{
{
1
,
2
,
3
},
{
4
,
5
,
6
}
},
// 元素2,第2個二維陣列
{
{
7
,
8
,
9
},
{
10
,
11
},
},
// 元素3,第3個二維陣列
{
{
12
,
13
},
{
17
,
18
}
}
};
// 行數是3,存在3個二維陣列
System
。
out
。
println
(
threeDimArray
。
length
);
// 第1個二維陣列的行數2
System
。
out
。
println
(
threeDimArray
[
0
]。
length
);
// 第1個二維陣列,第1行一維陣列的長度3
System
。
out
。
println
(
threeDimArray
[
0
][
0
]。
length
);
for
(
int
i
=
0
;
i
<
threeDimArray
。
length
;
i
++)
{
for
(
int
j
=
0
;
j
<
threeDimArray
[
i
]。
length
;
j
++)
{
for
(
int
k
=
0
;
k
<
threeDimArray
[
i
][
j
]。
length
;
k
++)
{
// 遍歷三維陣列
System
。
out
。
println
(
threeDimArray
[
i
][
j
][
k
]);
}
}
}
}
}
總結
一維陣列在日常研發過程中還是比較常用的資料結構,二維陣列平時使用就相對較少了,三維甚至多維陣列使用的就是更少了,但是理解二維、三維和多維還是必要的,在遍歷的時候採用的方式也都是透過不斷降維的方式來解決多維資料的遍歷問題。