当前位置:网站首页>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
边栏推荐
猜你喜欢
About the configuration and use of json5 in nodejs
使用itextpdf实现截取pdf文档第几页到第几页,进行分片
正则表达式
How QT designer adds resource files
更改plsql工具栏的图标大小
Idea控制台乱码解决
Three point positioning based on ibeacons (wechat applet)
01-nio basic ByteBuffer and filechannel
Some good articles on pthread multithreading
MySQL-InnoDB-事务
随机推荐
線程組ThreadGroup使用介紹+自定義線程工廠類實現ThreadFactory接口
使用DialogFragment的一些感受及防踩坑经验(getActivity、getDialog为空,cancelable无效等)
Jmeter设置环境变量支持在任意终端目录输入jmeter直接启动
pthread_ Why does self() repeat
关于云容灾,你需要知道这些
Some experience of using dialogfragment and anti stepping pit experience (getactivity and getdialog are empty, cancelable is invalid, etc.)
JDBC详解
01-nio basic ByteBuffer and filechannel
贷款市场报价利率(LPR)与贷款基准利率介绍
Understand the concepts of virtual base class, virtual function and pure virtual function (turn)
Wechat applet initializes Bluetooth, searches nearby Bluetooth devices and connects designated Bluetooth (I)
使用开源调研工具Prophet是一种什么体验?
线程间控制之Semaphore使用介绍
帆软中根据分类进行汇总
How does void * exist?
政务云迁移实践 北明数科使用HyperMotion云迁移产品为某政府单位实施上云迁移项目,15天内完成近百套主机迁移
Can I compile the header file and source file of the template separately
mysql 5.1升级到5.611
MySQL lock database lock
JDBC和servlet写CRUD的接口总结