java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
import java.util.Arrays; public class TestArrays { public static void output(int[] array) { if (array != null) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } System.out.println(); } public static void main(String[] args) { int[] array = new int[5]; // 填充数组 Arrays.fill(array, 5); System.out.println("填充数组:Arrays.fill(array, 5):"); TestArrays.output(array); // 将数组的第2和第3个元素赋值为8 Arrays.fill(array, 2, 4, 8); System.out.println("将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):"); TestArrays.output(array); int[] array1 = { 7, 8, 3, 2, 12, 6, 3, 5, 4 }; // 对数组的第2个到第6个进行排序进行排序 Arrays.sort(array1, 2, 7); System.out.println("对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):"); TestArrays.output(array1); // 对整个数组进行排序 Arrays.sort(array1); System.out.println("对整个数组进行排序:Arrays.sort(array1):"); TestArrays.output(array1); // 比较数组元素是否相等 System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):" + "\n" + Arrays.equals(array, array1)); int[] array2 = array1.clone(); System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):" + "\n" + Arrays.equals(array1, array2)); // 使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确) Arrays.sort(array1); System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):" + "\n" + Arrays.binarySearch(array1, 3)); // 如果不存在就返回负数 System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):" + "\n" + Arrays.binarySearch(array1, 9)); } }
输出结果:
填充数组:Arrays.fill(array, 5): 5 5 5 5 5 将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8): 5 5 8 8 5 对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7): 7 8 2 3 3 6 12 5 4 对整个数组进行排序:Arrays.sort(array1): 2 3 3 4 5 6 7 8 12 比较数组元素是否相等:Arrays.equals(array, array1): false 克隆后数组元素是否相等:Arrays.equals(array1, array2): true 元素3在array1中的位置:Arrays.binarySearch(array1, 3): 1 元素9在array1中的位置:Arrays.binarySearch(array1, 9): -9
选择排序:(比冒泡排序更快,运行次数更少):
public class Start { public static void main(String[] args) { int[] arr={20,60,51,81,285,12,165,51,81,318,186,9,70}; for(int a:arr) { System.out.print(a+" "); } System.out.println("\n"+"---------------从小到大---------------"); arr=toSmall(arr); for(int a:arr) { System.out.print(a+" "); } System.out.println("\n"+"---------------从大到小---------------"); arr=toBig(arr); for(int a:arr) { System.out.print(a+" "); } } // 从大到小 public static int[] toSmall(int[] arr) { //遍历数组里除最后一个的其他所有数,因为最后的对象没有与之可以相比较的数 for(int i=0;i<arr.length-1;i++) { /*遍历数组里没有排序的所有数,并与上一个数进行比较 *“k=i+1”因为自身一定等于自身,所以相比没有意义 *而前面已经排好序的数,在比较也没有意义 */ for(int k=i+1;k<arr.length;k++) { if(arr[k]<arr[i])//交换条件(排序条件) { int number=arr[i]; arr[i]=arr[k]; arr[k]=number; }//交换 } } return arr; } // 从小到大 //和前面一样 public static int[] toBig(int[] arr) { for(int i=0;i<arr.length-1;i++) { for(int k=i+1;k<arr.length;k++) { if(arr[k]>arr[i]) { int number=arr[i]; arr[i]=arr[k]; arr[k]=number; } } } return arr; } }
冒泡排序
public class BubbleSort { /** * N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。 * @param args */ public static void main(String[] args) { int arr[] = {26,15,29,66,99,88,36,77,111,1,6,8,8}; for(int i=0;i < arr.length-1;i++) {//外层循环控制排序趟数 for(int j=0; j< arr.length-i-1;j++) { //内层循环控制每一趟排序多少次 // 把小的值交换到前面 if (arr[j]>arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } System.out.print("第"+(i+1)+"次排序结果:"); //列举每次排序的数据 for(int a=0;a<arr.length;a++) { System.out.print(arr[a] + "\t"); } System.out.println(""); } System.out.println("最终排序结果:"); for(int a = 0; a < arr.length;a++) { System.out.println(arr[a] + "\t"); } } }
实现数组和字符串的转换处理
public class Test { public static void main(String args[]) { String str = "helloworld"; char[] data = str.toCharArray();// 将字符串转为数组 for (int x = 0; x < data.length; x++) { System.out.print(data[x] + " "); data[x] -= 32; System.out.print(data[x] + " "); } System.out.println(new String(data)); } }
// 声明二维数组:有两行,列数待定,数组结构 = { { }, { } } String s[][] = new String[2][]; // 确定每行的元素个数,第一行有2个元素,第二行有3个元素, // 数组结构 = {{"E1", "E2"}, {"E1", "E2", "E3"}} s[0] = new String[2]; s[1] = new String[3];
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1347Java 数组
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
输出结果:
1346Java 数组
选择排序:(比冒泡排序更快,运行次数更少):
1345Java 数组
冒泡排序
1344Java 数组
实现数组和字符串的转换处理
1343Java 数组