三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

四、Arrays类

四、Arrays类

四、Arrays类

  • 数组的工具类java.util.Arrays

  • 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作。

  • 查看JDK帮助文档在线文档-jdk-zh

    Arrays

  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”)

  • 具有以下功能:

    • 给数组赋值:通过fill方法。

      Arrays-fill

    • 给数组排序:通过sort方法,按升序。

      Array-sort

    • 比较数组:通过equal方法比较数组中元素值是否相等。

      Arrays-equal

    • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

      Arrays-binary

package com.huang.array;
//Arrays类
import java.util.Arrays;public class ArrayDemo05 {public static void main(String[] args) {int[] a={10,2356,5446,2112,55,5585,6,858,5};System.out.println(a);//[I@e73f9ac//打印数组元素System.out.println(Arrays.toString(a));//使用工具类  [10, 2356, 5446, 2112, 55, 5585, 6, 858, 5]printArrays(a);//自己写的方法  [10, 2356, 5446, 2112, 55, 5585, 6, 858, 5]//不要过度依赖工具类!!!Arrays.sort(a);//对数组进行排序:升序System.out.println(Arrays.toString(a));//[5, 6, 10, 55, 858, 2112, 2356, 5446, 5585]Arrays.fill(a,0);//数组填充/数组赋值  全部都被填充为0   [0, 0, 0, 0, 0, 0, 0, 0, 0]Arrays.fill(a,2,4,0);//数组填充/数组赋值  只有元素2~4之间才会被填充为0   [5, 6, 0, 0, 858, 2112, 2356, 5446, 5585]System.out.println(Arrays.toString(a));}//方法public static void printArrays(int[] a){for (int i = 0; i < a.length; i++) {if (i == 0) {System.out.print("[");}if (i == a.length-1) {System.out.print(a[i]+"]");}else {System.out.print(a[i]+", ");}}}
}

冒泡排序

  • 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!

  • 冒泡排序还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。

  • 我们看到嵌套循环,应该立马可以得出这个算法的时间复杂度为O(n2)

    Array-冒泡

package com.huang.array;import java.util.Arrays;//冒泡排序/*1、比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置2、每一次比较都会产生出一个最大(小)的数字3、下一轮则可以少一次排序!4、依次循环直到结束!*/
public class ArrayDemo06 {public static void main(String[] args) {int[] a={1,2,3,15,23,8,9,6,4,7};int[] sort = sort(a);System.out.println(Arrays.toString(sort));}public static int[] sort(int[] array){//临时变量int temp=0;//外层循环,判断我们这个要走多少次//length-1  为了不溢出for (int i = 0; i < array.length-1; i++) {boolean flag=false;//通过flag标识位减少没有意义的比较//内层循环,比较判断两个数,如果第一个数比第二个数大,则交换的位置for (int j = 0; j < array.length-1-i ; j++) {if (array[j+1]>array[j]){temp=array[j];array[j]=array[j+1];array[j+1]=temp;flag=true;}}if (flag==false){break;}}return array;}
}
← 返回列表