Java数据结构与算法之Array数组
目录:1.数组概述2.java中数组的初始化3.java中针对数组的API4.数组排序5.字符串转数组(char[]/int[])6.二维数组的操作1.数组概述数组是重要的数据结构之一,以线性结构来存储固定数量大小,数据类型相同的数据2.java中数组的初始化(1)声明和初始化分开//声明//int[] a;int a[]
·
目录:
1.数组概述
2.java中数组的初始化
3.java中针对数组的API
4.数组排序
5.字符串转数组(char[]/int[])
6.二维数组的操作
1.数组概述
数组是重要的数据结构之一,以线性结构来存储固定数量大小,数据类型相同的数据
2.java中数组的初始化
(1)声明和初始化分开
(2)声明初始化同时进行
3.java中针对数组的API
(1)java中数组类Arrays的继承关系
(2)常用方法
asList(T... a) //将输入的参数转换成List类型的数据
binarySearch(Object[] a, Object key)//通过二分查找方法,在指定的数组中查找指定的元素,并返回下标
copyOf(Object[] original, int newLength) //将数组复制到另外一个数组中
copyOfRange(Object[] original, int from, int to) //将给定数组的给定区间元素复制到新数组中
equals(Object[] a, Object[] a2) //判断两个数组是否相等,也就是长度和元素值是否一致
deepEquals(Object[] a1, Object[] a2) //常用来比较多维数组
fill(Object[] a, Object val) //将指定的基本数据类型值分配到指定基本类型数组的每一项
fill(Object[] a, int fromIndex, int toIndex, Object val) //指定分配到指定的区间
sort(Object[] a)//增序排列
sort(Object[] a, int fromIndex, int toIndex) //指定需要排序的数组区间
toString(Object[] a) //转换成字符串类型
4.数组排序
ps:java中对数组的排序有两种方法,第一种是直接使用API中的sort(Object[] a)方法进行排序或者采用算法中的
各类算法,比如:冒泡排序,选择排序,插入排序,归并排序等等。
(1)API排序案例
控台输出:
(2)算法排序之冒泡排序
两种写法,第二种方法是每一次循环比较都循环n-1次,相比于第一种方法,没那么高效。
2.1) 第一种:
2.2) 第二种:
ps:这里只举例了一种排序算法,后面对排序算法做整体学习的时候再详细学习其它的排序算法
5.字符串转数组(char[]/int[])
(1)字符串转char[]
(2)字符串转int[]
6.二维数组的操作
(1)二维数组的声明(以int数组为例)
(2)二维数组的初始化
(3)二维数组的长度计算
(4)二维数组的遍历
控制台输出结果:
1.数组概述
2.java中数组的初始化
3.java中针对数组的API
4.数组排序
5.字符串转数组(char[]/int[])
6.二维数组的操作
1.数组概述
数组是重要的数据结构之一,以线性结构来存储固定数量大小,数据类型相同的数据
2.java中数组的初始化
(1)声明和初始化分开
//声明
//int[] a;
int a[];
//申请空间,int数组默认初始值为0
a= new int[5];
//根据下标单个赋值初始化
a[0] = 2;
//循环赋值
for (int i = 0; i < a.length; i++) {
a[i] = i;
}
(2)声明初始化同时进行
//int [] c ={1,3,4,5,6};
//int c[] ={1,3,4,5,6};
int c[] = new int[]{1,3,4,5,6};
3.java中针对数组的API
(1)java中数组类Arrays的继承关系
java.lang.Object
java.util.Arrays
(2)常用方法
asList(T... a) //将输入的参数转换成List类型的数据
binarySearch(Object[] a, Object key)//通过二分查找方法,在指定的数组中查找指定的元素,并返回下标
copyOf(Object[] original, int newLength) //将数组复制到另外一个数组中
copyOfRange(Object[] original, int from, int to) //将给定数组的给定区间元素复制到新数组中
equals(Object[] a, Object[] a2) //判断两个数组是否相等,也就是长度和元素值是否一致
deepEquals(Object[] a1, Object[] a2) //常用来比较多维数组
fill(Object[] a, Object val) //将指定的基本数据类型值分配到指定基本类型数组的每一项
fill(Object[] a, int fromIndex, int toIndex, Object val) //指定分配到指定的区间
sort(Object[] a)//增序排列
sort(Object[] a, int fromIndex, int toIndex) //指定需要排序的数组区间
toString(Object[] a) //转换成字符串类型
4.数组排序
ps:java中对数组的排序有两种方法,第一种是直接使用API中的sort(Object[] a)方法进行排序或者采用算法中的
各类算法,比如:冒泡排序,选择排序,插入排序,归并排序等等。
(1)API排序案例
package com.datastructure.test;
import java.util.Arrays;
import java.util.List;
public class ApiArray {
public static void main(String[] args){
int[] a = {4,6,78,8,34,56,26};
sortByApi(a);
}
/*
* 通过api直接对数组排序
*/
public static void sortByApi(int[] a){
System.out.println("排序前数组:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
System.out.println();
Arrays.sort(a);
System.out.println("排序后数组:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
}
}
控台输出:
排序前数组:
4 6 78 8 34 56 26
排序后数组:
4 6 8 26 34 56 78
(2)算法排序之冒泡排序
两种写法,第二种方法是每一次循环比较都循环n-1次,相比于第一种方法,没那么高效。
2.1) 第一种:
package com.datastructure.test;
import java.util.Arrays;
import java.util.List;
public class ApiArray {
public static void main(String[] args){
int[] a = {4,6,78,8,34,56,26,2};
sortByBubble(a);
}
/*
* 冒泡排序
*/
public static void sortByBubble(int[] a){
int temp,i,j;
System.out.println("排序前数组:");
for (i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
for (i = 1; i < a.length; i++) {
for (j = 0; j < a.length-i; j++) {
if (a[j]>a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
System.out.println();
System.out.println("排序后数组:");
for (i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
}
}
2.2) 第二种:
for (i = 1; i < a.length; i++) {
for (j = 0; j < a.length-1; j++) {
if (a[j]>a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
ps:这里只举例了一种排序算法,后面对排序算法做整体学习的时候再详细学习其它的排序算法
5.字符串转数组(char[]/int[])
(1)字符串转char[]
str="hellomynameisAndy";
char [] charArray = str.toCharArray();
(2)字符串转int[]
package com.datastructure.test;
public class Array {
public static void main(String[] args) {
StringToArray("1234");
}
/*
* 字符串转int数组,这里要求输入String全是数值
*/
public static void StringToArray(String str){
char[] ch;
int [] i;
int len;
//string长度
len = str.trim().length();
//初始化int数组
i=new int[len];
//通过charAt()取得单个字符转换成String类型再通过parseInt()转换成int类型
for (int j = 0; j < len; j++) {
i[j] =Integer.parseInt(String.valueOf(str.charAt(j)));
}
//int数组输出
System.out.println("int数组输出:");
for (int j = 0; j < i.length; j++) {
System.out.print(i[j]+"\t");
}
}
}
6.二维数组的操作
(1)二维数组的声明(以int数组为例)
int a[][];
int [][] b;
(2)二维数组的初始化
int a[][];
a = new int[][]{{12,3,34},{23,34,56,78}};
int[][] c ={{1,2,3},{34,55,6},{45,678,89}};
int [][] b;
b=new int[2][3];
b[0][0] = 1;
b[0][1] = 2;
b[0][2] = 5;
b[1][0] = 10;
b[1][1] = 34;
b[1][2] = 35;
(3)二维数组的长度计算
//计算多少行
array.length
//计算每行多少个元素
array[0].length
(4)二维数组的遍历
package com.datastructure.test;
public class TwoDimensionalArray {
public static void main(String[] args){
int row,col;
//注意初始化字符或字符串的时候记得加引号
int[][] c ={{1,2,3},{34,55,6},{45,678,89}};
//计算行数和列数,如果已知就用不着了
row = c.length;
col = c[0].length;
System.out.println("二维数组遍历输出:");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
System.out.print(c[i][j]+"\t");
}
System.out.println();
}
}
}
控制台输出结果:
二维数组遍历输出:
1 2 3
34 55 6
45 678 89
文章:
更多推荐
已为社区贡献1条内容
所有评论(0)