数组:
首先说明数组的定义和初始化等常用操作:
什么是数组:所谓数组,是相同数据类型的元素按一定顺序排列的集合。
数组可以看成是多个相同数据类型数据的组合,对这些数据的统一管理。
数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
数组中的元素可以是任何类型,包括基本类型和引用类型。
数组分为:(一般为一维数组和二维数组)。
1、声明一个数组:数据类型 [ ] 数组名称 = new 数据类型 [ array.length]
String[] array=
new
String[
5
];
java声明数组时不能指定其长度(数组中元素的个数),例如:
int a[5]; //非法
2、初始化数组的方式:
1、//最常用的方式:动态初始化。(也叫作
遍历数组
)
使用for循环来对数组进行初始化操作
for
(
int
i=
0
;i<array.length;i++){
//
{
2、 //对于一个数组元素较少的数组,可以使用静态方法初始化数组。
3、//使用foreach遍历数组元素:
for
(
int
array: numbers){
System.out.println(array);
}
3.查看数组长度;
1
2
|
int
length=array1.length;
System.out.println(
"length: "
+array1.length);
|
4.遍历数组;
1
2
3
|
for
(
int
i =
0
; i < array1.length; i++) {
System.out.println(array1[i]);
}
|
5.int数组转成string数组;
1
2
3
|
int
[] array3={
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
};
String arrStrings=Arrays.toString(array3);
System.out.println(arrStrings);
|
6.从array中创建arraylist;
1
2
|
ArrayList<String> arrayList=
new
ArrayList<String>(Arrays.asList(array1));
System.out.println(arrayList);
|
7.数组中是否包含某一个值;
1
2
3
4
5
|
String a=
"马超"
;
String[] array1={
"马超"
,
"马云"
,
"关羽"
,
"刘备"
,
"张飞"
};
if
(Arrays.asList(array1).contains(a)) {
System.out.println(
"马超在这里"
);
}
|
8.将数组转成set集合;
1
2
3
|
String[] array2=
new
String[]{
"黄渤"
,
"张艺兴"
,
"孙红雷"
,
"小猪"
,
"牙哥"
,
"黄磊"
};
Set<String> set=
new
HashSet<String>(Arrays.asList(array2));
System.out.println(set);
|
9.将数组转成list集合;
1
2
3
4
5
6
7
8
9
10
11
|
String[] array2=
new
String[]{
"黄渤"
,
"张艺兴"
,
"孙红雷"
,
"小猪"
,
"牙哥"
,
"黄磊"
};
//方法 1.
List<String> list=
new
ArrayList<String>();
for
(
int
i =
0
; i < array2.length; i++) {
list.add(array2[i]);
}
String[] arrStrings2={
"1"
,
"2"
,
"3"
};
//方法 2.
List<String > list2=java.util.Arrays.asList(arrStrings2);
System.out.println(list2);
|
10.Arrays.fill()填充数组;
1
2
3
4
5
6
|
int
[] arr3=
new
int
[
5
];
Arrays.fill(arr3,
10
);
//将数组全部填充10
//遍历输出
for
(
int
i =
0
; i < arr3.length; i++) {
System.out.println(arr3[i]);
}
|
11.数组排序;
1
2
3
4
5
6
7
8
9
10
11
12
|
//方法 1.
int
[] arr4 = {
3
,
7
,
2
,
1
,
9
};
Arrays.sort(arr4);
//.sort(int[] a) 放入数组名字
for
(
int
i =
0
; i < arr4.length; i++) {
System.out.println(arr4[i]);
}
//方法 2.
int
[] arr5 = {
3
,
7
,
2
,
1
,
9
,
3
,
45
,
7
,
8
,
8
,
3
,
2
,
65
,
34
,
5
};
Arrays.sort(arr5,
1
,
4
);
//.sort(a, fromIndex, toIndex) 从第几个到第几个之间的进行排序
for
(
int
i =
0
; i < arr5.length; i++) {
System.out.println(arr5[i]);
}
|
12.复制数组;
1
2
3
4
5
6
7
8
|
//方法 1.
int
[] arr6 = {
3
,
7
,
2
,
1
};
int
[] arr7=Arrays.copyOf(arr6,
10
);
//指定新数组的长度
//方法 2.
int
[] arr8=Arrays.copyOfRange(arr6,
1
,
3
);
//只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)
for
(
int
i =
0
; i < arr8.length; i++) {
System.out.println(arr8[i]);
}
|
13.比较两个数组;
1
2
3
|
int
[] arr9 = {
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
};
boolean
arr10=Arrays.equals(arr6, arr9);
System.out.println(arr10);
|
14.去重复;
1
2
3
4
5
6
7
8
9
10
11
12
13
|
int
[] arr11 = {
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
,
3
,
2
,
4
,
5
,
6
,
7
,
4
,
32
,
2
,
1
,
1
,
4
,
6
,
3
};
//利用set的特性
Set<Integer> set2=
new
HashSet<Integer>();
for
(
int
i =
0
; i < arr11.length; i++) {
set2.add(arr11[i]);
}
System.out.println(set2);
int
[] arr12 =
new
int
[set2.size()];
int
j=
0
;
for
(Integer i:set2) {
arr12[j++]=i;
}
System.out.println(Arrays.toString(arr12));
|
15.查询数组中的最大值和最小值;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
int
[] arr11 = {
10
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
,
3
,
2
,
4
,
5
,
6
,
7
,
4
,
32
,
2
,
1
,
1
,
4
,
6
,
3
};
//计算最大值
int
max = arr11[
0
];
for
(
int
i =
1
; i < arr11.length; i++) {
if
(arr11[i] > max) {
max = arr11[i];
}
}
System.out.println(
"Max is "
+ max);
//计算最小值
int
min = arr11[
0
];
for
(
int
i =
0
; i < arr11.length; i++) {
if
(arr11[i]<min) {
min = arr11[i];
}
}
System.out.println(
"Min is "
+ min);
|
接下来,说一下为什么要使用数组:
例如一个足球队通常会有几十个人,但是我们来认识他们的时候首先会把他们看作是某某对的成员,然后再利用他们的号码来区分每一个队员,这时候,球队就是一个数组,而号码就是数组的下标,当我们指明是几号队员的时候就找到了这个队员。 同样在编程中,如果我们有一组相同数据类型的数据,例如有10个数字,这时候如果我们要用变量来存放它们的话,就要分别使用10个变量,而且要记住这10个变量的名字,这会十分的麻烦,这时候我们就可以用一个数组变量来存放他们,例如在VB中我们就可以使用dim a(9) as integer(注意:数组的下标是从0开始的,所以10个数的话,下标就是9,a(0)=1)。 使用数组会让程序变的简单,而且避免了定义多个变量的麻烦。
什么情况下使用数组?
数组和List的区别:数组长度固定,List未限定长度,由此就可以看出来数组是在长度固定的时候使用,一般使用List集合列表。