Java中的Arrays类使用详解
转载来自:https://blog.csdn.net/liu_yanzhao/article/details/70847050
首先先创建一个打印数组的方法,方便后面直接使用
public static void output(int []a) {for(int i=0;i<a.length;i++) {System.out.printf(a[i]+" ");}System.out.println();
}
1、填充数组:fill
eg1.
int []arr = new int[5];
Arrays.fill(arr, 2);
output(arr);
结果是:2 2 2 2 2
分析:给所有值赋值2
eg2.
int []arr = new int[5];
Arrays.fill(arr, 1,3,8);
output(arr);
结果是:0 8 8 0 0
分析:给第1位(0开始)到第3位(不包括)赋值8
2、数组元素排序:sort
eg1.
int []arr = {3,2,1,5,4};
Arrays.sort(arr);
output(arr);
结果是:1 2 3 4 5
分析:给所有数按升序排序
eg2.
int []arr = {3,2,1,5,4};
Arrays.sort(arr,1,3);
output(arr);
结果是:3 1 2 5 4
分析:给第1位(0开始)到第3位(不包括)排序
3、比较数组元素是否相等:equals
int []arr1 = {1,2,3};
int []arr2 = {1,2,3};
System.out.println(Arrays.equals(arr1,arr2));
结果是:true
分析:如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。
这里补充一下,如果还是不用Arrays.equals,那么我们应该如何重写equals来比较两个数组的元素是否相等呢?这里提供一段代码
//Compare the contents of two int arrayspublic static boolean isEquals(int[] a, int[] b){if( a == null || b == null ){return false;}if(a.length != b.length){return false;}for(int i = 0; i < a.length; ++i ){if(a[i] != b[i]){return false;}}return true;}
4、二分查找法找指定元素的索引值(下标):binarySearch
数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置
eg1:
int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 20));
结果是:1
分析:能找到该元素,返回下标为1(0开始)
eg2:
int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 35));
结果是:-4
分析:找不到元素,返回-x,从-1开始数,如题,返回-4
eg3:
int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 0,3,30));
结果是:2
分析:从0到3位(不包括)找30,找到了,在第2位,返回2
eg4:
int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 0,3,40));
结果是:-4
分析:从0到3位(不包括)找40,找不到,从-1开始数,返回-4
5、截取数组:copeOf和copeOfRange
eg1: copy
int []arr = {10,20,30,40,50};
int []arr1 = Arrays.copyOf(arr, 3);
output(arr1);
结果:10 20 30
分析:截取arr数组的3个元素赋值给姓数组arr1
int []arr = {10,20,30,40,50};
int []arr1 = Arrays.copyOfRange(arr,1,3);
output(arr1);
eg2: copyOfRange
int []arr = {10,20,30,40,50};
int []arr1 = Arrays.copyOfRange(arr,1,3);
output(arr1);
结果:20 30
分析:从第1位(0开始)截取到第3位(不包括)
6、其他
还有hashCode,toString,clone等这里就不介绍了,暂时用的少
Java中的Arrays类使用详解相关推荐
- Java中的StringBuilder类功能详解
字符串是Java程序中最常用的一种数据结构之一.在Java中的String类已经重载的"+".也就是说,字符串可以直接使用"+"进行连接,如下面代码所示: St ...
- Java中Lambda表达式使用及详解
Java中Lambda表达式使用及详解 前言 一.Lambda表达式的简介 Lambda表达式(闭包):java8的新特性,lambda运行将函数作为一个方法的参数,也就是函数作为参数传递到方法中.使 ...
- Java中的异常和处理详解
Java中的异常和处理详解 参考文章: (1)Java中的异常和处理详解 (2)https://www.cnblogs.com/lulipro/p/7504267.html 备忘一下.
- Arrays类常用方法详解
Java-Arrays类常用方法详解 一.Arrays类的定义 Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法二.Arrays类的常用方法 1.Arrays.asList( ...
- [转载] java中接口(interface)详解
参考链接: Java接口Interfaces 接口(interface) 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. ...
- Java利器之UML类图详解
前言 UML(Unified Modeling Language)中文统一建模语言,是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了 ...
- java中接口(interface)详解
接口(interface) 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值 ...
- java中static修饰函数_详解java中static关键词的作用
在java中,static是一个修饰符,用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载 ...
- java中使用poi导出Excel详解,kotlin音标
到这个问题,可以设置encoding为双字节.POI可以到www.apache.org下载到. 编译好的jar主要有这样4个:poi包, poi Browser包, poi hdf包, poi hss ...
- java中的setattribute_JSP request.setAttribute()详解及实例
javascript request.setAttribute()详解 request.setAttribute()怎么用的? JSP1代码 String [] test=new String[2]; ...
最新文章
- Android和IOS 调用 支付宝和微信 支付方法
- python报表_Python生成报表
- Linux《命令行大全》——前言
- 如何从rpm包中提取文件
- 01-eclipse打包运行程序总是报错java.lang.NoClassDefFoundError和ava.lang.ClassNotFoundException(打包原理)
- eclipse中添加svn插件
- 深入理解 C 语言的函数调用过程
- junit.framework.AssertionFailedError: No tests found in错误解决办法
- C++全局函数与成员函数的区别
- 《编写可维护的JavaScript》——JavaScript编码规范(七)
- 十二进制转十进制-练习
- 2019年第二阶段我要变强个人训练赛第十五场
- VC删除IE缓存、COOKIE及浏览记录
- 测试ios软件开发,iOS开发中的测试框架
- OpenCV:对图像的位操作bitwise_and(与),bitwise_or(或),bitwise_not(非),bitwise_xor(异或)
- VMware虚拟机安装Linux系统(详细版)
- 创建一个动态空间存储未知大小的二维数组
- 毕业设计分享----基于Java的个性化博客空间的设计与实现
- 计算机学业水平考试反思总结8百,考试反思总结范文(精选5篇)
- 车联网路侧设施设置指南
热门文章
- VS2010 让你的Javascript代码可以折叠
- 树形目录生成器.bat
- JDK和CGLIB生成动态代理类的区别
- win10+eclipse+hadoop2.6.0 开发环境
- 一条SQL语句查询出成绩名次 排名 (转)
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
- 我只能说,Spring Data REST真的很燥辣
- Linux中的静态库和动态库简介及生成过程示例
- 大学的最后一年有一门课程叫“人生”。
- 如何让内容页调用样式表?