数组
Arrays类常用方法
- boolean equals(array1,array2):比较两个数组是否相等
- Arrays.deepEquals(Object[] array1, Object[] array2)
- 判断两个多维数组是否相等,实际上比较的是两个数组的哈希值,即 Arrays.hashCode(data1) == Arrays.hashCode(data2)
- Arrays.hashCode(Object[] array) 返回数组的哈希值
- Arrays.deepHashCode(Object[] array) 返回多维数组的哈希值
- void sort(array):对数组array元素进行升序排序
- String toString(array):该方法将会一个数组array转换成一个字符串
- Arrays.deepToString(Object[] array) 返回多维数组元素的字符串形式
- void fill(array,val):把数组array所有元素都赋值为val
- copyof(array,length):把数组array复制成一个长度为length的新数组
- Arrays.copyOfRange(T[] original, int from, int to)拷贝数组,指定起始位置和结束位置,如果超过长度,会用null进行填充
- int binarySearch(array,val):查询元素值val在数组array中下标
- Arrays.fill(Object[] array, Object obj)用指定元素填充整个数组(会替换掉数组中原来的元素)
- Arrays.parallelSort(T[] array)对数组元素进行排序(并行排序),当数据规模较大时,会有更好的性能
- Arrays.spliterator(T[] array) 返回数组的分片迭代器,用于并行遍历数组
- Arrays.stream(T[] array) 返回数组的流Stream,然后我们就可以使用Stream相关的许多方法了
public static void main(String[] args) {
System.out.print("请输入一个4个节点的数组:");
Scanner in=new Scanner(System.in);
int a[]=new int[4];
for (int i = 0; i < a.length; i++) {
a[i]=in.nextInt();
}
Arrays.sort(a); //数组的自然排序
System.out.println(Arrays.toString(a));//输出数组拼接的字符串
}
这里列举了一个有关数组的简单应用:其实我学数组就做了这一个例子,在学java之前已经有一些数组的基础了,更多有关数组的应用其实是在,进一步的学习之后进行的.
有关toString方法:其实是java类的一个输出方法,实现的是Object类的toString方法.
有关jdk8 的stream
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。
- 求最大,最小,求和
@Test
public void test1() {
int[] intArray = new int[]{2, 3, 34};
Integer sum = 0;
for (int i : intArray) {
sum += i;
}
int max = Arrays.stream(intArray).max().getAsInt();
int min = Arrays.stream(intArray).min().getAsInt();
System.out.println("总和:" + sum + " 最大:" + max + " 最小:" + min);
}
- forEach遍历数组
@Test
public void test2() {
int[] intArray = new int[10];
final int[] i = {0};
Arrays.stream(intArray).forEach(x -> {
x = i[0];
i[0]++;
System.out.print(x + " ");
});
}
- map对stream中的所有数据进行统一映射操作,mapToDouble为了不丢失精度的操作
@Test
public void test3() {
Scanner scanner = new Scanner(System.in);
List<Double> soccerList = new ArrayList<>();
while (!scanner.hasNext("-1")) {
soccerList.add(scanner.nextDouble());
}
System.out.println(" 总和:" + soccerList.stream().mapToDouble(Number::doubleValue).sum() +
" 平均分: " + soccerList.stream().mapToDouble(Number::doubleValue).sum() / soccerList.size() +
" 最高分: " + soccerList.stream().mapToDouble(Number::doubleValue).max().getAsDouble() +
" 最低分: " + soccerList.stream().mapToDouble(Number::doubleValue).min().getAsDouble());
scanner.close();
}
更多有关stream的操作在这里就不多说了.也不适合初学者学习