Java#27(Arrays)

目录

一.Arrays

操作数组的工具类

二.Lambda表达式

1.注意:

2.省略规则


一.Arrays

操作数组的工具类

                                方法名                                                               作用
public static String toString(数组)                                       把数组拼接成一个字符串
public static int binarySearch(数组,查找的元素)                 二分查找法查找元素
public static int[ ] copyof(原数组,新数组长度)                                拷贝数组
public static int[ ] copyofRange(原数组,起始索引,结束索引)   拷贝数组(指定范围)
public static void fill(数组,元素)                                                        填充数组
public static void sort(数组)                                                按照默认方式进行数组排序
public static void sort(数组,排序规则)                                    按照指定的规则排序

代码示范: 

package ArrayDemo;

import java.util.Arrays;

public class ArrayDemo1 {
    public static void main(String[] args) {
        //1.Arrays.toString
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        System.out.println(Arrays.toString(arr));
        
        //2.Arrays.binarySearch的使用,数组必须是有序的
        System.out.println(Arrays.binarySearch(arr, 5));
        
        //3.Arrays.copyOf拷贝时,新数组的长度大于就数组,多出的部分会默认添加初始值
        //新数组小于旧数组的话就会是部分拷贝
        int[] arr1 = Arrays.copyOf(arr,11);
        System.out.println(Arrays.toString(arr1));
        
        //4.Arrays.copyOfRange拷贝时,包左不包右,索引6对应的是数据7
        int[] arr2 = Arrays.copyOfRange(arr,2,6);
        System.out.println(Arrays.toString(arr2));
        
        //5.Arrays.fill
        int[] arr3 = new int[10];
        Arrays.fill(arr3,5);
        System.out.println(Arrays.toString(arr3));
        
        //6.Arrays.sort,使用时默认是快速排序,升序
        int[] arr4 = {1,4,67,3,2,5,7};
        Arrays.sort(arr4);
        System.out.println(Arrays.toString(arr4));
    }
}

结果展示:

 public static void sort(数组,排序规则)

底层原理:
利用插入排序 + 二分查找的方式进行排序的
默认把0索引的数据当做是有序的序列,1索引到最后认为是无序的序列

遍历无序的序列得到里面的每一个元素,假设当前遍历得到的元素是A元素

把A往有序序列中进行插入,在插入的时候,是利用二分查找确定A元素的插入点

拿着A元素,跟插入点的元素进行比较,比较的规则就是compare方法的方法体

如果方法的返回值是负数,拿着A继续跟前面的数据进行比较

如果方法的返回值是正数,拿着A继续跟后面的数据进行比较

如果方法的返回值是9,也拿着A跟后面的数据进行比较

直到能确定A的最终位置为止

compare方法的形式参数:
参数一 o1:表示在无序序列中,遍历得到的每一个元素

参数二 o2:有序序列中的元素
返回值:
负数: 表示当前要插入的元素是小的,放在前面

正数:表示当前要插入的元素是大的,放在后面

0: 表示当前要插入的元素跟现在的元素比是一样的们也会放在后面

简单理解:

o1 - o2: 升序排序

o2 - o1: 降序排序 

二.Lambda表达式

1.注意:

(1)Lambda表达式可以用来简化匿名内部类的书写

(2)Lambda表达式只能简化函数式接口的匿名内部类的写法

(3)函数式接口:有且仅有一个抽象方法的接口叫做函数式接口,接口上可以加@FunctionalInterface注解

2.省略规则

(1)参数类型可以不写

(2)只有一个参数,参数类型可以省略,同时( )也可以省略

(3)如果Lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,但需要同时省略

代码示范:

package Demo;

public class Test {
    public static void main(String[] args) {

               //匿名内部类
        //之前的写法
        method(new swim() {
            @Override
            public void swimming() {
                System.out.println("正在游泳1");
            }
        });
        //Lambda的写法
        method(()-> {
            System.out.println("正在游泳2");
            }
        );
    }
    public static void method(swim s){
        s.swimming();
    }
}

//函数式接口
interface swim{
    public abstract void swimming();

}

结果展示:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值