当前位置:网站首页>Arrays类的使用案例

Arrays类的使用案例

2022-04-23 14:09:00 白马非马·

Arrays类

Arrays类常用于操作数组对象,常用功能有两个,一个是排序,一个是转化为 字符串。

1. 转化为字符串输出

一维数组输出:Arrays.toString(data)

//当数组是一维的时候:Arrays.toString(data)
int[] data=new int[]{
    2,3,4,5};
System.out.println("data="+Arrays.toString(data));
//data=[2, 3, 4, 5]

多维数组输出:Arrays.deepToString(data)

//当数组是一维的时候:Arrays.toString(data)
int[]] data=new int[][]{
    {
    2,3,4,5},{
    2,3,4},{
    4,3,1}};
System.out.println("data="+Arrays.deepToString(data));
//data=[[2, 3, 4, 5], [2, 3, 4], [4, 3, 1]]

2. 排序

一整型数组为例,进行排序

2.1 一维数组排序(默认为升序):Arrays.sort(data)

int[] data=new int[]{
    2,5,4,1};
Arrays.sort(data);
System.out.println("data="+Arrays.toString(data));
//data=[1, 2, 4, 5]

2.2 一维数组排序(自定义排序):Arrays.sort(data)

  • 如果需要自定义数组中元素的顺序,需要对sort的比较器Comparator类中的compare方法进行重写,其中Comparator是一个匿名内部类。
//需要对比较器Comparator类中的compare方法进行重写
Integer[] data=new Integer[]{
    2,5,4,1};
Arrays.sort(data,new Comparator<Integer>(){
    
   @Override
   public int compare(Integer a,Integer b){
    
      return b-a;
            }
        });
   System.out.println("data="+Arrays.toString(data));

//可以使用lambda表达式对匿名内部类进行简写
Integer[] data=new Integer[]{
    2,5,4,1};
Arrays.sort(data,(a,b)-> b-a);
System.out.println("data="+Arrays.toString(data));

2.3 多维数组排序(自定义排序):Arrays.sort(data)

//首先根据数组第一个元素进行升序排列,
//如果相等,则根据第二个元素逆序排列
int[][] data=new int[][]{
    {
    3,1,2},{
    3,2,3},{
    1,2,3}};
Arrays.sort(data,(a,b)->{
    
	if(a[0]==b[0]) return a[1]-b[1];
	return b[0]-a[0];
	});
	System.out.println("data="+Arrays.deepToString(data));
	//data=[[3, 1, 2], [3, 2, 3], [1, 2, 3]]

3. 数组转集合Arrays.asList()(最简单方式)

String[] string={
    "2","3","a","b"};
List<String> list=new Arraylist<>(Arrays.asList(string);
list.add("3");
System.out.println("list="+lsit);

注意:

  • Arrays.asList(string)是对象的方法,传入的必须是对象数组,而不是基本类型,故需要使用包装类。
  • Arrays.asList(string),得到的对象是Arrays一个内部类,并不是List集合,故没有修改和添加的功能,需要把他转变为ArrayList集合。

4. (补充知识)匿名内部类(内部类)

4.1 什么是内部类:

1)定义在类中的类

4.2 内部类的作用:

1)可以访问该类定义所作用域的数据,包括private修饰的私有数据。
2)可以解决Java单继承的缺陷。

4.3 什么是匿名内部类:

1)本质上式一个没有名字的局部内部类,定义在方法中,代码块中。
2)作用:方便创建子类对象,最终目的是为了简化代码编写
3)格式如下:

Animal a=new Animal(){
    
public void run(){
    
};

5. (补充知识)Lambda表达式

  • 简化函数是接口的匿名内部类写法,主要目的是用于简化代码。
  • 在对Arrays.sort进行自定义排序就用到了Lambda表达式。

版权声明
本文为[白马非马·]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_42974034/article/details/124050915