java.util.Arrays
Arrays.asList()
String[] strArray = {"zhang", "xue", "zhi"};
List list = Arrays.asList(strArray);
for (int i=0; i<list.size(); i++) {
System.out.print(list.get(i) + " ");
}
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
- 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();
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();
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))
System.out.println(Arrays.deepEquals(ticTacToe1, ticTacToe2))
String[] ticTacToe3 = { " O ", " O ", " X " }
String[] ticTacToe4 = { " O ", " O ", " X " }
System.out.println(Arrays.equals(ticTacToe3, ticTacToe4))
System.out.println(Arrays.deepEquals(ticTacToe3, ticTacToe4))
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))
System.out.println(Arrays.deepEquals(ticTacToe1, ticTacToe2))
// ticTacToe1和ticTacToe1深层相等,深层哈希编码也相等。
System.out.println(Arrays.deepHashCode(ticTacToe1))
System.out.println(Arrays.deepHashCode(ticTacToe2))
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))
Arrays.equals()
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 + " ");
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
- 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();
Arrays.toString()
遍历数组
遍历一维数组
int[] a = {6,5,4,3,2,1};
// 遍历数组 for
for (int i=0; ilength; 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
- 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; ilength; i++) {
for (int j=0; jlength; j++)
if (j == a[i].length-1)
System.out.print(a[i][j]);
else
System.out.print(a[i][j] + ", ");
System.out.println();
}
数组对象的方法
- 数组从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);
for (int item : b)
System.out.print(item + " ");
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))
arr.getClass()
int[] a = {1,2,3,4,5,6}
System.out.println(a.getClass())
arr.hashCode()
int[] a = {1,2,3,4,5,6}
// 两种方法的结果不同。
System.out.println(a.hashCode())
System.out.println(Arrays.hashCode(a))
arr.toString()
int[] a = {1,2,3,4,5,6}
System.out.println(a.toString())
System.out.println(Arrays.toString(a))
数组对象的属性
arr.length
int[] a = {1,2,3,4,5,6};
int len = a.length;
System.out.println(len);
from: http://blog.csdn.net/xuezhisdc/article/details/52346800