java api 数组_Java数组常用API

java.util.Arrays

Arrays.asList()

数组转换成列表

String[] strArray= {"zhang", "xue", "zhi"};

List list =Arrays.asList(strArray);//打印元素

for (int i=0; i

System.out.print(list.get(i)+ " ");

}1

2

3

4

5

6Arrays.binarySearch()

二分查找

查找前,一定要排序。

如果查找元素不存在,返回(-(insertion point) - 1)。

自然数表示查到,负数表示没有查找。int[] a = {3,5,9,7,2};

Arrays.sort(a);//排序//打印数组

for (intitem : 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

19Arrays.copyOf()

复制长度大于原数组长度时,后面补零。int[] a = {3,5,9,7,2};int[] newa = Arrays.copyOf(a, 2);int[] newa2 = Arrays.copyOf(a, 7); //复制长度大于原数组的长度

for (intitem : newa)

System.out.print(item+ " ");

System.out.println();for (intitem : newa2)

System.out.print(item+ " ");

System.out.println();1

2

3

4

5

6

7

8

9

10

11Arrays.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 (intitem : newa)

System.out.print(item+ " ");

System.out.println();for (intitem : newa2)

System.out.print(item+ " ");

System.out.println();1

2

3

4

5

6

7

8

9

10

11Arrays.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

9Arrays.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

7Arrays.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

9Arrays.equals()

参考Arrays.deepArrays()

Arrays.fill()

填充数组元素int[] a = {1,2,3,4,5,6};

Arrays.fill(a,8);//全部填充

for (intitem : a)

System.out.print(item+ " ");

System.out.println();

Arrays.fill(a,1, 3, 0);//指定范围,替换

for (intitem : a)

System.out.print(item+ " ");1

2

3

4

5

6

7

8

9

10Arrays.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

13Arrays.sort()int[] a = {6,5,4,3,2,1};//指定范围排序

Arrays.sort(a, 1, 4);for (intitem : a)

System.out.print(item+ " ");

System.out.println();//全部元素排序

Arrays.sort(a);for (intitem : a)

System.out.print(item+ " ");

System.out.println();1

2

3

4

5

6

7

8

9

10

11Arrays.toString()

参考 Arrays.deepToString()

遍历数组

遍历一维数组int[] a = {6,5,4,3,2,1};//遍历数组 for

for (int i=0; i

System.out.print(a[i]);elseSystem.out.print(a[i]+ ", ");

System.out.println();//遍历数组 - foreach

for (intitem : a)if (item == a[a.length-1])

System.out.print(item);elseSystem.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

System.out.print(a[i][j]);elseSystem.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 (intitem : b)

System.out.print(item+ " ");1

2

3

4

5

6arr.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

7arr.getClass()int[] a = {1,2,3,4,5,6};

System.out.println(a.getClass());1

2

3arr.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

5arr.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.lengthint[] a = {1,2,3,4,5,6};int len =a.length;

System.out.println(len);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值