干货! arrays,lambda的介绍与练习

34 阅读2分钟

一. Arrays

顾名思义 arrays是对数组操作的类.

它可以帮助我们更好的了解算法等知识,其中的方法在面对实际问题的时候对我们的帮助很大

方法

1.tostring:把一个数组拼接成字符串

public static void main(String[] args) {
     int []arr={1,2,3,4,5};
    System.out.println(Arrays.toString(arr));
} 
输出为[1, 2, 3, 4, 5]

2.binarySearch(数组,要查的数):二分查找元素

当找到数是时返回数的索引. 如果没有找到,则返回的是 --- 插入值-1;

为什么要减一呢? 其实是为了避免查找0这个数时出现的重复问题

int []arr={1,2,3,4,5};
System.out.println(Arrays.binarySearch(arr,4));
返回3
System.out.println(Arrays.binarySearch(arr,6));
返回-6

3.copyof(原数组,新数组长度):拷贝数组

4.copyofrange(原数组,起始索引,结束索引):拷贝数组(指定范围) : 如果新数组的长度大于老数组,则会补上默认初始值

5.fill(数组,元素):填充数组

将一个数组的所有元素变为指定元素;

6.(重点)sort:按照默认方式进行数组排序

int []arr1={1,4,6,83,9,10,};
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));

输出为[1, 4, 6, 9, 10, 83]

很简单的几行代码解决了,而且相比于快速排序,冒泡排序这个方法的运行时间更短,它的底层原理是用插入排序和二分查找的.

7.(重难点)sort(数组,排序规则):按照指定的规则排序

首先该数组的类型要用包装类.其次排序规则是什么?

这里的排序规则需要的是一个comparator接口的实现类,而这个类我们只需使用一次所以可以直接采用匿名内部类的方式就可以了

Arrays.sort(arr1, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1-o2;
        }
    });
}

其中的 o1,o2就是类似插入排序的一种实现方法.如果学过C语言的小伙伴就会了解到这和C语言的qsort中的函数是相差无二的

Lambda表达式

lambda表达式是jdk 8开始后的一种新语法形式

屏幕截图 2023-11-24 155053.png 有了这种语法的话就可以简化上述中sort中的comparator了

Arrays.sort(arr1,(Integer o1,Integer o2)->{return o1-o2;});

对于这类语法的使用前提,必须是接口的匿名内部类,接口中只能有一个抽象方法

如果有多个抽象方法的话()中就不知道是传递那个方法了.

Lambda的省略规则:

1.参数类型可以省略不写

2.如果只有一个参数,参数类型可以省略,同时()也可以不写;

3.如果lambda表达式方法只有一行,大括号,分号,return可以省略不写,需要同时省略

Arrays.sort(arr1,(o1,o2)->o1-o2);

以上就是这期的全部内容了,我们下期再见!