java学习笔记6

    技术2022-07-11  124

    1,找出最大元素的最小下标值

    double max = myList[0]; int indexofMax = 0; for (int i=0;i<myList.length;i++){ if(myList[i] > max){ max = myList[i]; indexofMax = i; } }

    用一次循环就找到了最大值,每次循环都将得到的较大数,在下一次循环中与新加入的数比较,在循环结束后就可以得到最大数。

    2,foreach循环 不使用下标变量就可以顺序地遍历整个数组, 例如

    for (double e: myList){ System.out.println(e); }

    3,复制数组

    list1 = list2;

    该语句不能将list2的内容复制给list1,而只是将引用值复制给了list1。list1原先所使用的数组不能再引用,就变成了垃圾会被java虚拟机自动回收。

    复制方法: 1,使用循环语句逐个复制数组的元素 2,使用System类中的静态方法arraycopy。

    int[] a = {1,2,3,4,5,6,7,8}; int[] b = {8,7,6,5,4,3,2,1}; for (int time = 0; time < 8;time++) { System.out.println(a[time]+" "+b[time]); } System.arraycopy(a, 0, b, 0, 8); /*方法内五个参数从左到右分别表示原数组对象,原数组起始copy位置, 目标数组对象,目标数组起始copy位置,复制的元素个数*/ for (int times = 0; times < 8;times++) { System.out.println(a[times]+" "+b[times]); }

    3,使用clone方法复制数组

    4,基本数据类型都是值传递,而数组传递的是引用 因此,如果改变方法中的数组将会看到方法外的数组也改变了。

    public class TestArrayArguments { public static void main(String[] args){ int x = 1; int[] y = new int[10]; m(x,y); System.out.println("x is " +x); System.out.println("y[0] is " +y[0]); } public static void m(int x, int[] y){ x = 1001; y[0] = 5555; }

    5,数组的查找方法

    1,线性查找法 即将要查找的关键字key与数组中的元素逐个进行比较。 由于线性查找法的执行时间随着数组元素个数的增长而线性增长,所以对于大数组而言,线性查找法的效率并不高。 2,二分查找法 二分查找法使用前提条件是数组中的元素必须已经排好序了。假设数组已按升序排列。二分查找法首先将关键字与数组中间元素进行比较。关键字小于中间元素,只需在前半部分查找,相等则匹配成功查找结束,大于则只需在后半部分查找。

    实现代码如下,list已排好了序 public class BinarySearch { public static int binarySearch(int[] list, int key){ int low = 0; int high = list.length - 1; while (high >= low){ int mid = (low + high )/2; if(key < list[mid]){ high = mid - 1; } else if (key == list[mid]){ return mid; } else low = mid + 1; } return -low - 1; } }

    六,排序方法 1,选择排序法 即先找到数列中最小的数,然后将它和第一个元素交换,接下来在剩下的数中找到最小数,以此类推,知道数列中仅剩一个数

    public static void selectionSort(double[] list){ for (int i = 0;i < list.length - 1;i++){ for (int j = i + 1;j < list.length;j++){ if (list[i] > list[j]){ double x = list[i]; list[i] = list[j]; list[j] = x; } } } }

    2,冒泡排序法 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

    public static void selectionSort(double[] list){ for (int i = 0;i < list.length - 1;i++){ for (int j = 0;j < list.length;j++){ if (list[j] > list[j+1]){ double x = list[j]; list[j] = list[j+1]; list[j+1] = x; } } } }

    七,Arrays类 包含各种静态方法。用于实现数组的排序和查找,数组的比较和填充数组元素,以及返回数组的字符串表示。 排序:sort或者parrallelSort

    java.util.Arrays.sort(list1);//升序 java.util.Arrays.sort(list1,13);//对list1[1]到list1[3-1]部分升序 查找:binarySearch(二分查找法) System.out.println(java.util.Arrays.binarySearch(list1 , 11));/*若不存在关键字,方法返回 -(insertionIndex+1),与之前的二分查找法代码返回值相同*/ 比较:equals System.out.println(java.util.Arrays.equals(list1 , list2));//输出true或false 填充:fill java.util.Arrays.fill(list1 , 5);//将5填充到list1中,即将所有元素替换为5 java.util.Arrays.fill(list2 , 1 , 5 , 8);/*将8填充到元素list2[1]到list2[5-1]中,即将1到5-1 的位置上的元素都换为8*/ 用字符串的形式返回一个数组中的所有元素:toString System.out.println(java.util.Arrays.toString(list));
    Processed: 0.010, SQL: 9