您的位置:首页 > 理论基础 > 数据结构算法

Java数据结构与算法之Array数组

2017-12-22 15:14 323 查看
目录:

1.数据概述

2.java数组的初始化

3.java数组API

4.数组排序

5.字符串转数组

6.数组封装后的使用

1. 数据概述

数组是重要的数据结构之一,以线性结构来存储固定数量大小,数据类型相同的数据

2. java数组的初始化

(1)声明和初始化分开

public static void main(String[] args) {
//(1)声明和初始化分开
//申明 数组
int a [];
//申请空间
a = new int[5];
//根据下标赋值
//默认值为0
a[1] = 2;
for (int i : a) {
System.out.println(i);
}

}


(2)声明初始化同时进行

public static void main(String[] args) {
//(2)声明初始化同时进行
int a  [] = new int[]{1,2,3,4};
for (int i : a) {
System.out.println(i);
}

}


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. 数组排序

java中对数组的排序有两种方法,第一种是直接使用API中的sort(Object[] a)方法进行排序或者采用算法中的

各类算法,比如:冒泡排序,选择排序,插入排序,归并排序等等。

5. 字符串转数组

(1)字符串转char[]

str="hello";
char [] charArray = str.toCharArray();


(2)字符串转int[]

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. 数组封装后的使用

public class UseArray {
private int[] array;
private int number = 0;
public UseArray(int max){
array = new int[max];
}
public void insert(int value){
array[number] = value;
number++;
}
public int find(int value){
for (int i= 0; i < number; i++) {
if(array[i]==value)
return i;
}
return number;
}

public boolean delete(int value){
int index = find(value);
if(index != number){
for (int i = index; i < number-1; i++) {
array[i] = array[i+1];
}
number--;
return true;
}
return false;
}

public void display(){
for (int i = 0; i < number; i++) {
System.out.printf(array[i]+" ");
}
}
public static void main(String[] args) {
UseArray ua  = new UseArray(5);
ua.insert(1);
ua.insert(2);
ua.insert(6);
ua.insert(7);
ua.insert(3);

ua.display();
if(ua.find(5) != ua.number){
System.out.println("find,the number index is "+ua.find(5));
}else{
bc17

System.out.println("not found!");
}
if(ua.delete(5)!=true){
System.out.println("can not delete!");
}
ua.display();
}
}


优化查找(二分查找)

private static int find(int[] array, int value) {
int start = 0;
int end = array.length-1;
while(start <= end){
int mid = (end + start) / 2;
int midValue = array[mid];
if (midValue < value)
start = mid + 1 ;
else if (midValue > value)
end = mid -1;
else
return mid;

}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构