Java学习笔记七——数组工具类Arrays
数组工具类Arrays
Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组。若将里面的方法用熟的话,那开发效率会大大提高。下面介绍其中的方法。
List<T> asList(T... a)
作用:将指定数组或数组元素,转换成固定大小的List。
用法:
String[] strArr = { "aaa", "bbb", "vvv" };
//用法1:参数是数组引用
List<String> list = Arrays.asList(strArr);
for (String str : list) {
System.out.println(str);
} //用法2:参数是不限个数的数组元素
List<String> list2 = Arrays.asList("aaa", "bbb", "vvv");
for (String str : list2) {
System.out.println(str);
}
注意:参数列表虽然是不定参数,但只有上面两种用法:要么是一个数组引用,要么是数据类型一致的多个参数。
int binarySearch(type[] a,type key)
作用:使用二分法查询元素key在数组a中出现的索引。
type:char,byte,short,int,float,double,String和自定义对象。
限制:1.若type是基本数据类型或String,则数组a的元素必须是按照升序排列好的;
2.若type是自定义对象,则该对象必须实现Comparable接口(只有一个compareTo方法,用于规定对象比较大小规则),且数组a的元素必须是按照升序排列好的。
例子:
int[] intArr = {12,34,45,56,67,78,89};
int indexInt = Arrays.binarySearch(intArr, 67);
System.out.println(indexInt); // String[] strArr = { "aaa", "bbb","ccc", "vvv" };
int indexStr = Arrays.binarySearch(strArr, "ccc");
System.out.println(indexStr); //
下面看一个type是自定义对象的例子:
//自定义对象 ,必须实现Comparable接口
public class Model implements Comparable<Model> { public int age; //规定两个对象之间比较大小的规则,按照参数顺序,
//若返回1,则当前对象>m;
//若返回0,则当前对象==m;
//若返回-1,则当前对象<m;
//
@Override
public int compareTo(Model m) {
if(age >m.age){
return 1;
}
if(age == m.age){
return 0;
}
//剩下的就是小于
return -1;
}
}
public class Test { public static void main(String[] args) { //定义3个Model对象
Model m1 = new Model();
m1.age = 20;
Model m2 = new Model();
m2.age = 45;
Model m3 = new Model();
m3.age = 32;
//定义数组,按照从小到大顺序,即升序
Model[] mArr = {m1,m3,m2}; int indexM = Arrays.binarySearch(mArr, m3);
System.out.println(indexM); //
}
}
int binarySearch(type[] a,int fromIndex,int toIndex,typekey)
作用:与上个方法类似,只是搜索数组a中fromIndex索引到toIndex索引之间的元素。
type:char,byte,short,int,float,double,String和自定义对象。
限制:同上。
例子:略
type[] copyOf(type[] original,int newLength)
作用:复制数组original的newLength个元素,组成新的数组,并返回这个新数组。
type:type:基本类型,String类型和自定义对象。
说明:若newLength小于original数组的长度,则返回original数组的前newLength个元素;若newLength大于original数组的长度,则则不足的补充0(数值类型)、false(布尔类型)、null(引用类型)。
例子:
public class Test { public static void main(String[] args) { int[] original = {1,2,3,4,5};
//小于original数组长度
int[] newArr = Arrays.copyOf(original, 3);
for (int i : newArr) {
System.out.println(i); //1,2,3
} //大于original数组长度
int[] newArr2 = Arrays.copyOf(original, 8);
for (int i : newArr2) {
System.out.println(i); //1,2,3,4,5,0,0,0
} }
}
type[] copyOfRangetype[] original,int from,int to)
作用:复制original中索引从from到to之间的元素(包括from,不包括to),组成新数组并返回该新数组。
type:基本类型,String类型和自定义对象。
例子:
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] original = { 1, 2, 3, 4, 5 };
int[] newArr = Arrays.copyOfRange(original, 0, 2);
for (int i : newArr) {
System.out.println(i); // 1,2
} }
}
boolean equals(type[] a1, type[] a2)
作用,比较两个数组,若a1和a2的长度相等,并且a1的每个元素都与a2与之对应索引的元素都相等,则返回true;否则返回false
type:基本类型,String类型和自定义类型(实现Comparable接口)
例子:
import java.util.Arrays; public class Test { public static void main(String[] args) { String[] a1 = { "aaa","bbb","ccc"};
String[] a2 = { "aaa","bbb","ccc"};
String[] a3 = { "aaa","www","ccc"};
boolean a1a2 = Arrays.equals(a1, a2);
System.out.println(a1a2); //true boolean a1a3 = Arrays.equals(a1, a3);
System.out.println(a1a3); //false
}
}
void fill(type[] a,type val)
作用:将数组a的元素全部赋值为val,若原来有值,则覆盖。相当于用val填充数组a。
type:基本类型,String类型和自定义类型
例子:
import java.util.Arrays; public class Test { public static void main(String[] args) { String[] a = new String[5];
Arrays.fill(a, "aaa");
for (String str : a) {
System.out.println(str); //打印5次 "aaa"
}
}
}
void fill( type[] a,int fromIndex,int toIndex,type val)
作用:用val填充数组a中索引从fromIndex到索引toIndex的元素,包括fromIndex,不包括toIndex
type:基本类型,String类型和自定义类型
例子:
import java.util.Arrays; public class Test { public static void main(String[] args) { String[] a = { "111", "222", "333", "444444", "5555555555" };
Arrays.fill(a, 2, 4, "mmm");
for (String str : a) {
System.out.println(str); // 打印"111", "222","mmm","mmm","5555555555"
}
}
}
未完待续。。。
Java学习笔记七——数组工具类Arrays的更多相关文章
- Java学习:数组工具类Arrays
数组工具类Arrays java.util.Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组常见的操作. public static String toString(数组) ...
- java数组 数组工具类Arrays
一.数组 1.java有严格的数据类型限制,一个数组只能声明一个数据类型,存放同一种数据类型. 2.虽然只能存放一种数据类型,假设A , 如果数据类型B 继承A,依然能存放进入数组. 3.数组的初始化 ...
- 并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理
在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并 ...
- java学习笔记07--日期操作类
java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...
- Java常用类(四)之数组工具类Arrays
前言 数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作. 一.Arra ...
- Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)
Math类:数学工具类,做一些数学计算,开方,对数,三角函数等 所有方法都是静态方法,不需要建立对象,直接用类名调用即可 示例: 这里写几个在日常开发中会用到的,比如三角函数之类的平时不会用到,了解即 ...
- java学习笔记之日期日历类
java学习笔记之日期日历 Date日期类概述: 表示特定的瞬间,精确到毫秒 Date类的构造方法: 1.空参数构造方法 Date date = new Date(); 获取到当前操作系统中的时间和日 ...
- Java知识系统回顾整理01基础06数组07数组工具类Arrays
一.Arrays简介 Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能. 大大提高了开发人员的工作效率. 二.Arrays提供的数组复制方法 与使用System.arraycopy ...
- Java学习笔记七 常用API对象三
一.泛型:简单说就是对对象类型进行限定的技术 public class GenericDemo { public static void main(String[] args){ /*泛型作为1.5版 ...
随机推荐
- HDMI学习
市面上大多4K显示器都配备了HDMI 1.4接口,仅能实现30Hz的刷新率,不足以带来流畅的显示效果, 酱紫情况,就算是搭配了HDMI 2.0高清线也是无法发挥其作用.只有更先进的HDMI 2.0标准 ...
- PagedDataSource、Repeater以及AspNetPager在ASP.NET上分页。
一.前台使用服务器标签 1.1使用Repeater控件 <asp:Repeater ID="Repeater1" runat="server"> & ...
- Android 7.0 UICC 分析(二)
本文讲解UiccCard类 /frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/UiccCard.java U ...
- vim--macro
例: qa some vim command q 这个宏只记录了vim命令到寄存器a中,执行这个宏可以用命令: @a 也可以加上执行次数: 10@a 执行10次 当你执行过一次@a之后,你可以用 @@ ...
- jQuery Mobile 表单输入元素
jQuery Mobile 文本输入 输入字段是通过标准的 HTML 元素编写的,jQuery Mobile 会为它们设置专门针对移动设备的美观易用的样式.您还可以使用新的 HTML5 <inp ...
- curl 模拟登录微信公众平台带验证码
这段时间一直写个项目, 从切图到前端到后台都要搞定,真tm累. 今天下午手残,不停用错误的密码去模拟登录微信公众平台,结果后来出现验证码,瞬间悲剧(菜鸟从来没搞过带验证码的). 研究了一下,发现其实很 ...
- 安装JDK,Python SDK及环境变量的配置
JDK 首先是下载安装包 http://pan.baidu.com/share/link?shareid=3261115669&uk=369127748 一般JDK和Jre是一起安装的,提醒大 ...
- Unity 之 Shader 对Z深度的偏移
对Z深度的偏移 Offset 指令给了我们一个操作正常的ZTest 检测结果的手段. Offset有两个参数,这两个参数理解起来不是很直观,而且具体实现是和硬件相关的 下面在实际例子中看他的效果 Sh ...
- PHP从mysqli中获取的资源$result是不是不能while($row = $result->fetch_assoc())这样两次?【坑】
PHP从mysqli中获取的资源$result是不是不能while($row = $result->fetch_assoc())这样两次? 因为我这样做,结果后面的查询结果就无法显示了,目前尚不 ...
- [译]关于iOS和OS X废弃的API你需要知道的一切
原文: Everything You Need to Know about iOS and OS X Deprecated APIs 如你所知,已废弃(Deprecated)的API指的是那些已经过时 ...