Java数组应用实例
完成数组的各项操作,包括数组的排序,查找,反转,合并,差集,交集,并集等。
数组打印
public static void printArray(String message, int a[]) {
//数组打印
System.out.println(message);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+",");
}
System.out.println();
}
数组反转
public static void reverseArray(int a[]) {
//数组反转 调用Collections的reverse方法。
ArrayList< Integer> arrayList = new ArrayList<>();
for (int i = 0; i < a.length; i++) {
arrayList.add(a[i]);
}
System.out.println("反转前:");
for (Integer integer : arrayList) {
System.out.print(integer+",");
}
System.out.println();
Collections.reverse(arrayList);
System.out.println("排序后:");
for (Iterator<Integer> iterator = arrayList.iterator(); iterator.hasNext();) {
System.out.print(iterator.next()+",");
}
System.out.println();
}
获取数组的最大值和最小值
//获取数组的最大值
public static int getMax(int a[]) {
int max = 0;
for (int i = 0; i < a.length; i++) {
if(a[i]>max) {
max= a[i];
}
}
return max;
}
//获取数组的最小值
public static int getMin(int a[]) {
int min= 0;
for (int i = 0; i < a.length; i++) {
if(a[i]<min) {
min= a[i];
}
}
return min;
}
数组的合并
public static void joinArray(int[] a, int[] b) {
//合并两个数组
List<Integer> list = new ArrayList<>();
for (int i = 0; i < a.length; i++) {
list.add(a[i]);
}
for (int i = 0; i < b.length; i++) {
list.add(b[i]);
}
System.out.println("合并后的数组:");
for (Integer integer : list) {
System.out.print(integer+" ");
}
System.out.println();
}
数组的差集
//求两个数组的差集
public static void diffSet(int a[],int b[]) {
ArrayList<Integer> s1 = new ArrayList<>();
ArrayList<Integer> s2 = new ArrayList<>();
for (int i = 0; i < a.length; i++) {
s1.add(a[i]);
}
for (int i = 0; i < b.length; i++) {
s2.add(b[i]);
}
s1.removeAll(s2);
for (Integer integer : s1) {
System.out.print(integer+" ");
}
System.out.println();
}
数组的交集
//求两个数组的交集
public static void intersectionArray(int a[],int b[]) {
ArrayList<Integer> s1 = new ArrayList<>();
ArrayList<Integer> s2 = new ArrayList<>();
for (int i = 0; i < a.length; i++) {
s1.add(a[i]);
}
for (int i = 0; i < b.length; i++) {
s2.add(b[i]);
}
//用retailAll()方法。
s1.retainAll(s2);
System.out.println(s1);
}
数组的并集
//求两个数组的并集
public static void unionSet(int a[],int b[]) {
Set<Integer> set = new HashSet<Integer>();
for (int i = 0; i < a.length; i++) {
set.add(a[i]);
}
for (int j :b) {
set.add(j);
}
for (Iterator<Integer> iterator = set.iterator(); iterator.hasNext();) {
Integer integer = (Integer) iterator.next();
System.out.print(integer+" ");
}
System.out.println();
}
应用实例:
public static void main(String[] args){
int array [] = {2,5,-2,6,-3,8,0,-7,-9,4};
printArray("排序前的数组为:", array);
System.out.println("数组的排序结果是:");
Arrays.sort(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
System.out.println();
//在已排序数组中查询特定的元素,返回元素所在已排序数组中的索引
int index = Arrays.binarySearch(array, 4);
System.out.println("元素4在"+index+"个位置");
//获取数组中元素的个数
System.out.println("数组的大小为:"+array.length);
reverseArray(array);
System.out.println("数组中的最大值:"+getMax(array));
System.out.println("数组中的最小值:"+getMin(array));
int b[] = {3,6,89};
joinArray(array, b);
int array1 [] = {2,5,-5,6,-3,8,0,-7,-10,4};
int array2 [] = {2,5,-2,9,-3,4,0,-7,-9,4};
System.out.print("array1-array2=");
diffSet(array1, array2);
System.out.print("array2-array1=");
diffSet(array2, array1);
System.out.println("array1 ∩ array2=");
intersectionArray(array1, array2);
System.out.println("array2 ∩ array1=");
intersectionArray(array2, array1);
System.out.println("array2∪ array1=");
unionSet(array2, array1);
System.out.println("array1∪ array2=");
unionSet(array1, array2);
//比较两个数组是否相等
System.out.println(array1.equals(array2));
}