我的java学习随笔 :数组

数组

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的操作在这里就不多说了.也不适合初学者学习

发布了22 篇原创文章 · 获赞 0 · 访问量 587

猜你喜欢

转载自blog.csdn.net/lixiang19971019/article/details/104893707
今日推荐