首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 數組操作完全指南:聲明、初始化、轉換、排序、去重與常用工具類實戰

     編輯:Java 綜合教學

前言

數組是 Java 最基礎的資料結構,掌握其核心操作與 java.util.Arrays 工具類,能大幅提升編碼效率。本文系統整理 15 大常用操作,附完整可運行代碼,適合速查與面試複習。

一、聲明與初始化

// 聲明
String[] strArr;
int[] intArr;

// 靜態初始化
String[] names = {"馬超", "馬雲", "關羽"};
int[] scores = new int[]{100, 90, 80};

// 動態初始化
int[] dynamic = new int[5];
for (int i = 0; i < dynamic.length; i++) dynamic[i] = i + 1;

二、核心屬性與遍歷

int len = names.length; // 長度不可變
for (int i = 0; i < len; i++) System.out.println(names[i]);
// Java 5+ 增強 for
for (String n : names) System.out.println(n);

三、Arrays 工具類核心方法速查表

需求方法範例
轉字串輸出toString(arr)Arrays.toString(new int[]{1,2,3}) → "[1, 2, 3]"
轉 ListasList(arr)List<String> list = Arrays.asList(names);(定長)
轉 Set(去重)new HashSet<>(Arrays.asList(arr))利用 Set 不重複特性
判斷包含Arrays.asList(arr).contains(val)僅適用引用類型,基本型需裝箱
填充值fill(arr, val)Arrays.fill(arr, 0);
排序sort(arr) / sort(arr, from, to)原地排序,支援部分區間
複製copyOf(arr, newLen) / copyOfRange(arr, from, to)後者不含 to 索引
比較內容equals(arr1, arr2)長度相同且對應元素 equals 為 true
二分查找binarySearch(arr, key)前提:已排序

四、進階實戰:去重、最大最小值

1. 去重並轉回數組

int[] src = {1,2,3,2,4,3,5};
Set<Integer> set = new LinkedHashSet<>(); // 保持順序
for (int v : src) set.add(v);
int[] distinct = set.stream().mapToInt(Integer::intValue).toArray();
// Java 8+ 一行流:Arrays.stream(src).distinct().toArray()

2. 尋找最大/最小值

int max = Arrays.stream(arr).max().orElse(Integer.MIN_VALUE);
int min = Arrays.stream(arr).min().orElse(Integer.MAX_VALUE);
// 或傳統迴圈,避免 Stream 開銷

五、完整可運行 Demo

package demo;
import java.util.*;
public class ArrayDemo {
    public static void main(String[] args) {
        String[] names = {"馬超", "馬雲", "關羽", "劉備", "張飛"};
        System.out.println("長度:" + names.length);
        System.out.println("包含馬超:" + Arrays.asList(names).contains("馬超"));
        System.out.println("轉 List:" + Arrays.asList(names));
        System.out.println("轉 Set:" + new HashSet<>(Arrays.asList(names)));
        
        int[] nums = {3, 7, 2, 1, 9};
        Arrays.sort(nums);
        System.out.println("排序後:" + Arrays.toString(nums));
        
        int[] dup = {1,2,3,2,4,3};
        int[] unique = Arrays.stream(dup).distinct().toArray();
        System.out.println("去重:" + Arrays.toString(unique));
    }
}

六、避坑指南

  1. Arrays.asList 返回的 List 不可增刪(長度固定),需 `new ArrayList<>(Arrays.asList(...))` 取得可變 List。
  2. 基本型數組(int[])無法直接用 Arrays.asList 轉 List<Integer>,需手動裝箱或用 Stream API。
  3. sort、binarySearch 會修改原數組,若需保留原序請先複製。
  4. 多線程環境下數組非線程安全,考慮 `CopyOnWriteArrayList` 或加鎖。

總結

熟練掌握 Arrays 與 Stream API 的組合拳,能以最少代碼完成 90% 的數組處理需求。建議收藏本文速查表,實戰中「用工具類、少手寫迴圈」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved