Java数组常用API
java.util.Arrays
Arrays.asList()
数组转换成列表
String[] strArray = {"zhang", "xue", "zhi"};
List<String> list = Arrays.asList(strArray);
// 打印元素
for (int i=0; i<list.size(); i++) {
System.out.print(list.get(i) + " ");
}
1
2
3
4
5
6
Arrays.binarySearch()
二分查找
查找前,一定要排序。
如果查找元素不存在,返回(-(insertion point) - 1)。
自然数表示查到,负数表示没有查找。
int[] a = {3,5,9,7,2};
Arrays.sort(a); // 排序
// 打印数组
for (int item : a)
System.out.print(item + " ");
System.out.println();
// 二分查找
int ind1 = Arrays.binarySearch(a, 2);
int ind2 = Arrays.binarySearch(a, 4);
int ind3 = Arrays.binarySearch(a, 1, 3, 5);
System.out.println("2的查找位置:" + ind1);
System.out.println("4的查找位置:" + ind2);
System.out.println("5的查找位置:" + ind3); // 字符串
String[] strArray = {"aa", "bc", "ab", "cd"};
Arrays.sort(strArray);
int ind4 = Arrays.binarySearch(strArray, "bc");
System.out.println("'bc'的查找位置是:" + ind4);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Arrays.copyOf()
复制长度大于原数组长度时,后面补零。
int[] a = {3,5,9,7,2};
int[] newa = Arrays.copyOf(a, 2);
int[] newa2 = Arrays.copyOf(a, 7); //复制长度大于原数组的长度 for (int item : newa)
System.out.print(item + " ");
System.out.println(); for (int item : newa2)
System.out.print(item + " ");
System.out.println();
1
2
3
4
5
6
7
8
9
10
11
Arrays.copyOfRange()
复制长度大于原数组长度时,后面补零。
Java中区间一般都是左闭右开[a,b),即包括左边,不包括右边。
int[] a = {3,5,9,7,2};
int[] newa = Arrays.copyOfRange(a, 1, 3);
int[] newa2 = Arrays.copyOfRange(a, 1, 8); //复制长度大于原数组的长度 for (int item : newa)
System.out.print(item + " ");
System.out.println(); for (int item : newa2)
System.out.print(item + " ");
System.out.println();
1
2
3
4
5
6
7
8
9
10
11
Arrays.deepEquals()
比较数组元素是否深层相等。
一维数组无区别,高维数组有区别。
String[][] ticTacToe1 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
String[][] ticTacToe2 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
System.out.println(Arrays.equals(ticTacToe1, ticTacToe2));// false
System.out.println(Arrays.deepEquals(ticTacToe1, ticTacToe2));// true String[] ticTacToe3 = { " O ", " O ", " X " };
String[] ticTacToe4 = { " O ", " O ", " X " };
System.out.println(Arrays.equals(ticTacToe3, ticTacToe4)); // true
System.out.println(Arrays.deepEquals(ticTacToe3, ticTacToe4)); // true
1
2
3
4
5
6
7
8
9
Arrays.deepHashCode()
深层相等的两个数组的深层哈希编码也相等。
String[][] ticTacToe1 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
String[][] ticTacToe2 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
System.out.println(Arrays.equals(ticTacToe1, ticTacToe2));// false
System.out.println(Arrays.deepEquals(ticTacToe1, ticTacToe2));// true
// ticTacToe1和ticTacToe1深层相等,深层哈希编码也相等。
System.out.println(Arrays.deepHashCode(ticTacToe1));
System.out.println(Arrays.deepHashCode(ticTacToe2));
1
2
3
4
5
6
7
Arrays.deepToString()
// 二维数组有区别
String[][] ticTacToe1 = { { " O ", " O ", " X " }, { " O ", " X ", " X " },{ " X ", " O ", " O " } };
System.out.println(Arrays.deepToString(ticTacToe1)); // 深层变换成字符串
System.out.println(Arrays.toString(ticTacToe1)); // 一般 // 一维数组无区别
String[] ticTacToe3 = { " O ", " O ", " X " };
System.out.println(Arrays.deepToString(ticTacToe3)); // 深层变换成字符串
System.out.println(Arrays.toString(ticTacToe3)); // 一般
1
2
3
4
5
6
7
8
9
Arrays.equals()
参考Arrays.deepArrays()
Arrays.fill()
填充数组元素
int[] a = {1,2,3,4,5,6}; Arrays.fill(a, 8);//全部填充
for (int item : a)
System.out.print(item + " ");
System.out.println(); Arrays.fill(a, 1, 3, 0);//指定范围,替换
for (int item : a)
System.out.print(item + " ");
1
2
3
4
5
6
7
8
9
10
Arrays.hashCode()
如果两个数组相等,哈希编码也相等。
int[] a = {1,2,3,4,5,6};
int[] b = {1,2,3,4,5,6};
String[] c = {"a", "b", "c"};
String[] d = {"a", "b", "c"}; System.out.println("a==b:" + Arrays.equals(a, b));
System.out.println("a和b的哈希码分别为:" + Arrays.hashCode(a) + "\t" + Arrays.hashCode(b));
// 字符串
System.out.println("c==d:" + Arrays.equals(c, d));
System.out.println("c和d的哈希码分别为:" + Arrays.hashCode(c) + "\t" + Arrays.hashCode(d)); System.out.println("c==d:" + c.equals(d));
System.out.println("c和d的哈希码分别为:" + c.hashCode() + "\t" + d.hashCode());
1
2
3
4
5
6
7
8
9
10
11
12
13
Arrays.sort()
int[] a = {6,5,4,3,2,1};
// 指定范围排序
Arrays.sort(a, 1, 4);
for (int item : a)
System.out.print(item + " ");
System.out.println();
// 全部元素排序
Arrays.sort(a);
for (int item : a)
System.out.print(item + " ");
System.out.println();
1
2
3
4
5
6
7
8
9
10
11
Arrays.toString()
参考 Arrays.deepToString()
遍历数组
遍历一维数组
int[] a = {6,5,4,3,2,1};
// 遍历数组 for
for (int i=0; i<a.length; i++)
if (i == a.length-1)
System.out.print(a[i]);
else
System.out.print(a[i] + ", ");
System.out.println(); // 遍历数组 - foreach
for (int item : a)
if (item == a[a.length-1])
System.out.print(item);
else
System.out.print(item + ", ");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
遍历二维数组
int[][] a = {{1,2,3}, {4,5,6}, {7,8,9}};
// 遍历二维数组 for
for (int i=0; i<a.length; i++) {
for (int j=0; j<a[i].length; j++)
if (j == a[i].length-1)
System.out.print(a[i][j]);
else
System.out.print(a[i][j] + ", ");
System.out.println();
}
1
2
3
4
5
6
7
8
9
10
数组对象的方法
数组从java.lang.Object继承的方法:clone, equals, finalize, getClass, hashCode, notify, toString, wait
arr.clone()
通过克隆生成另一个数组
int[] a = {1,2,3,4,5,6};
int[] b = a.clone();
Arrays.fill(a, 1, 4, 0); // 改变a,看是否对b有影响
//打印b
for (int item : b)
System.out.print(item + " ");
1
2
3
4
5
6
arr.equals()
arr.equals()和Arrays.equals()不同
int[] a = {1,2,3,4,5,6};
int[] b = a.clone();
int[] c = a;
// 判等
System.out.println(Arrays.equals(a, b)); // 比较内容
System.out.println(a.equals(b)); //比较地址
System.out.println(a.equals(c));
1
2
3
4
5
6
7
arr.getClass()
int[] a = {1,2,3,4,5,6}; System.out.println(a.getClass());
1
2
3
arr.hashCode()
int[] a = {1,2,3,4,5,6}; // 两种方法的结果不同。
System.out.println(a.hashCode());
System.out.println(Arrays.hashCode(a)); // Arrays.hashCode()
1
2
3
4
5
arr.toString()
int[] a = {1,2,3,4,5,6}; System.out.println(a.toString()); // 地址
System.out.println(Arrays.toString(a)); //字符串
1
2
3
4
数组对象的属性
arr.length
int[] a = {1,2,3,4,5,6}; int len = a.length;
System.out.println(len);
转自:https://blog.csdn.net/xuezhisdc/article/details/52346800
参考:https://blog.csdn.net/qq_19558705/article/details/50436583
Java数组常用API的更多相关文章
- 数组常用API(1)
数组常用API: 1. push 作用:数组尾部添加: 特点:可以添加一个或多个值: 返回值是数组最新的长度:会改变原数组: 示例: var arr = [10,20,30,40]; ...
- Java 之常用API(一)
常用API 1 API概述 2 Scanner类与String类 3 StringBuilder类 NO.one API概述 1.1 API概述 API(Application Programm ...
- Java之常用API
API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些 ...
- JavaScript之数组常用API
这篇文章主要帮助大家简单理解数组的一些常用API用法,许多小伙伴常用方法记不住?别急,看完下面的介绍您一定就会明白各个方法是如何用的了.该文章适合新手小白看,大佬可以多多指点️! 1.数组的创建以及A ...
- Java 基础 常用API (Object类,String类,StringBuffer类)
Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...
- Java 之常用API(二)
Object类 & System类 日期相关类 包装类 & 正则表达式 Object类 & System类 1.1 Object类 1.1.1 概述 Object类是Java语 ...
- java自学-常用api
API(Application Programming Interface),应用程序编程接口.Java API是JDK中提供给我们使用的类的说明文档.即jdk包里边写好的类,这些类将底层的代码实现封 ...
- Java的常用API
Object类 1.toString方法在我们直接使用输出语句输出对象的时候,其实通过该对象调用了其toString()方法. 2.equals方法方法摘要:类默认继承了Object类,所以可以使用O ...
- Java的常用API之System类简介
Syetem类 java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long c ...
随机推荐
- Linux服务器配置---ftp限制ip
ftp限制IP 1.通过vsftpd的配置文件以及“hosts.deny”和“hosts.allow”文件设置允许某个ip地址访问 1)修改配置文件“/etc/vsftpd/vsftpd.conf”中 ...
- jboos下载地址记录
JBoss在2006年被 RedHat 收购.在各种 J2EE 应用服务器中,JBoss 是最受欢迎而且功能最为强大的应用服务器.不过JBoss从8.0开始改名为WildFly,这个新名称在我看来似乎 ...
- 面试题之一(Spring和堆栈和逻辑运算符)
1.&和&&区别? 都是逻辑运算符,都是判断两边同时为真,否则为假:但&&当第一个为假时,后面就不执行,而&则还是要继续执行,直至结束: ——————— ...
- 20145206邹京儒《网络对抗》逆向及Bof基础实践
20145206邹京儒<网络对抗>逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:ma ...
- 20145310《网络对抗》注入shellcode及Return-to-libc
Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址. ...
- mysql数据库分库分表(Sharding)
mysql数据库切分 前言 通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制.一旦数据库过于庞大,尤其是当写入过于频繁,非常难由一台主机支撑的时候,我们还是会面临到扩展瓶 ...
- perl入门知识(2)
交互式编程你可以在命令行中使用 -e 选项来输入语句来执行代码,实例如下:$ perl -e 'print "Hello World\n"'输入以上命令,回车后,输出结果为:Hel ...
- CSS3 动画的一些属性
定义式 @keyframes 动画名称{ from{ } to{ } } 调用式 动画类似函数,只定义不调用是没效果的,所以要配合调用式使用. animation: 动画名称 动画时间 延时 时间曲线 ...
- C#学习笔记(九):函数、代码查询和调试
代码查询和调试 代码查询 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- kafka删除一个topic
前言 当我们在shell中执行topic删除命令的时候` kafka-topics --delete --topic xxxx --zookeeper xxx`,会显示,xxxx已经被标记为删除.然后 ...