8-数组 java

Java 数组

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
Java 语言中提供的数组是用来存储固定大小的同类型元素。

声明数组变量

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:


dataType[] arrayRefVar; // 首选的方法

dataType arrayRefVar[]; // 效果相同,但不是首选方法

创建数组

arrayRefVar = new dataType[arraySize];

注意 声明创建可以一块完成, 另外,你还可以使用如下的方式创建数组。

dataType[] arrayRefVar = {value0, value1, ..., valuek};

For-Each 循环

int[] x = {2, 1, 4, 5, 6, 7, 93, 345};  

for (int item : x) {  
    out.println(String.format("item: %d", item));  
}

数组作为函数的参数

把引用传过去, 会把里面数据进行修改

多维数组

String[][] str = new String[3][4];

可以理解为数组里面是数组

Arrays 类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort 方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

sort


Arrays.sort(x);  
  
StringBuffer sb = new StringBuffer();  
  
for (int item : x) {  
    sb.append(item);  
    sb.append(",");  
}  
sb.deleteCharAt(sb.length() -1 );  
out.println(sb);

### Java 数组高级用法教程 Java数组作为基础数据结构之一,提供了多种高级用法和操作技巧。以下是关于Java数组的一些进阶内容,涵盖多维数组、不规则数组、去重方法以及`java.util.Arrays`类的高级应用。 #### 1. 多维数组与不规则数组 多维数组是指数组的元素本身也是数组。在Java中,可以通过声明和初始化来创建多维数组。例如,二维数组可以表示为矩阵形式。此外,不规则数组(即每一行的长度不同)也可以通过手动初始化实现[^2]。 ```java // 定义一个3x3的二维数组 int[][] regularArray = new int[3][3]; // 定义一个不规则数组 int[][] irregularArray = { {1, 2}, {3, 4, 5}, {6} }; ``` #### 2. 使用`java.util.Arrays`类进行数组操作 `java.util.Arrays`类提供了丰富的静态方法,用于简化数组的操作。以下是一些常用的高级方法: - **排序**:使用`Arrays.sort()`对数组进行排序。 - **搜索**:使用`Arrays.binarySearch()`在已排序数组中查找特定值。 - **填充**:使用`Arrays.fill()`将数组的所有元素设置为指定值。 - **比较**:使用`Arrays.equals()`判断两个数组是否相等。 示例代码如下: ```java import java.util.Arrays; public class ArrayOperations { public static void main(String[] args) { int[] numbers = {5, 3, 8, 1, 9}; // 排序 Arrays.sort(numbers); System.out.println(Arrays.toString(numbers)); // 输出 [1, 3, 5, 8, 9] // 填充 Arrays.fill(numbers, 0); System.out.println(Arrays.toString(numbers)); // 输出 [0, 0, 0, 0, 0] // 比较 int[] anotherArray = {0, 0, 0, 0, 0}; boolean areEqual = Arrays.equals(numbers, anotherArray); System.out.println(areEqual); // 输出 true } } ``` #### 3. 数组去重 在Java中,数组去重可以通过多种方式实现。对于基本类型数组,可以结合`Set`接口完成去重;对于对象数组,则需要定义适当的`equals()`和`hashCode()`方法[^4]。 示例代码如下: ```java import java.util.Arrays; import java.util.LinkedHashSet; public class ArrayDeduplication { public static void main(String[] args) { int[] numbers = {1, 2, 2, 3, 4, 4, 5}; // 使用 LinkedHashSet 去重并保持顺序 LinkedHashSet<Integer> set = new LinkedHashSet<>(); for (int num : numbers) { set.add(num); } // 将结果转换回数组 Integer[] deduplicatedArray = set.toArray(new Integer[0]); System.out.println(Arrays.toString(deduplicatedArray)); // 输出 [1, 2, 3, 4, 5] } } ``` #### 4. 动态数组扩展 由于Java数组的大小固定,无法动态扩展。如果需要动态调整数组大小,可以考虑使用`ArrayList`或手动实现数组扩展逻辑。以下是手动扩展数组的示例: ```java public class ArrayResize { public static void main(String[] args) { int[] originalArray = {1, 2, 3}; int[] newArray = new int[originalArray.length + 2]; // 将原数组复制到新数组 System.arraycopy(originalArray, 0, newArray, 0, originalArray.length); // 在新数组中添加额外元素 newArray[originalArray.length] = 4; newArray[originalArray.length + 1] = 5; System.out.println(Arrays.toString(newArray)); // 输出 [1, 2, 3, 4, 5] } } ``` #### 5. 并行处理数组Java 8开始,`Arrays`类支持并行操作,例如`parallelSort()`方法可以利用多核处理器加速排序过程。这在处理大规模数组时尤其有用。 ```java import java.util.Arrays; public class ParallelArrayProcessing { public static void main(String[] args) { int[] largeArray = new int[1_000_000]; for (int i = 0; i < largeArray.length; i++) { largeArray[i] = (int) (Math.random() * 1_000_000); } // 使用并行排序 Arrays.parallelSort(largeArray); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值