Room of Requirment

Less is More


  • Home

  • Tags

  • Categories

  • Archives

Java 数组

Posted on 2019-08-27

基本概念

数组与其他种类容器之间的区别有三方面:效率、类型和保存基本类型的能力。
在Java中,数组是一种效率最高的储存和随机访问对象引用序列的方式。数组就是一个简单的线性序列,这使得元素访问非常快速。但这种速度所付出的代价是数组对象的大小被固定。ArrayList的效率比数组低很多。这两种持有对象的方式都是类型检查型的,并且唯一明显的差异就是数组使用[]来访问元素。而List使用的是add()和get()这样的方法。
length是数组的大小,而不是实际保存的元素个数,所以检查其中的引用是否为null,即可知道数组的某个位置是否存有对象。同样,基本类型的数组如果是数值型的,就被自动初始化为0,如果是字符型(char)的,就被自动初始化为(char)O;如果是布尔型(boolean),就被自动初始化为false。

多维数组

创建多维数组很方便。对于基本类型的多维数组,可以通过使用花括号将每个向量分隔开,每对花括号括起来的集合都会把你带到下一级数组。Java SE5的Arrays.deepToString()方法,它可以将多维数组转换为多个String。数组中构成矩阵的每个向量都可以具有任意的长度(这被称为粗糙数组)。
编写一个方法能够产生二维双精度型数组并加以初始化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static double[][][] creation(int a, int b) {
Random rand = new Random(47);
int c = b - a;
double d[][][] = new double[rand.nextInt(c) + a] [][];
for(int i = 0; i < d.length; i++) {
d[i] = new double[rand.nextInt(c) + a][];
for(int j = 0; j < d[i].length; j++) {
d[i][j] = new double[rand.nextInt(c) + a];
for(int q = 0; q < d[i][j].length; q++) {
d[i][j][q] = rand.nextDouble();
}
}
}
return d;
}

Arrays实用功能

  • Arrays.fill() 只能用同一个值填充各个位置

    1
    2
    3
    4
    int size = 6;
    int[] a = new int[size];
    Arrays.fill(a,19);
    print("a = " + Arrays.toString(a));
  • System.arraycopy() 不属于Arrays但是很有用的方法 static
    它用来复制数组比用for循环复制要快很多

    1
    2
    3
    4
    5
    int[] i = new int[7];
    int[] j = new int[10];
    Arrays.fill(i, 47);
    Arrays.fill(j, 99);
    System.arraycopy(i, 0, j, 0, i.length)

arraycopy()需要的参数有:源数组,表示从源数组中的什么位置开始复制的偏移量,表示从目标数组的什么位置开始的偏移量,以及需要复制的元素个数。对数组的任何越界操作都会导致异常
System.arraycopy()不会执行自动包装和自动拆包,两个数组必须具有相同的确切类型。

  • equals()
    Arrays类提供了重载后的equals()方法,用来比较整个数组
    数组相等的条件是元素个数必须相等,并且对应位置的元素也相等,这可以通过对每一个元素使用equals()作比较来判断。(*对基本类型,需要使用基本类型的包装器类的equals()方法
    deepEquals()用于多维数组

  • sort()用于对数组排序

  • binarySearch()用于在已经排列的数组中查找元素

  • toString()产生数组的String表示

  • hashCode()产生数组的散列码

# Data Structure
初识CNN
Java Initialization
  • Table of Contents
  • Overview

2AM

they said the fruit never gon' fall far from the tree
14 posts
1 categories
7 tags
  1. 1. 基本概念
  2. 2. 多维数组
  3. 3. Arrays实用功能
© 2019 2AM
Powered by Hexo v3.9.0
|
Theme – NexT.Muse v7.3.0