如何理解一個Java方法只做一件事?

為了實現(xiàn)代碼的可讀性、可擴展性等,在不同層面對實現(xiàn)邏輯的抽象與封裝。

舉個例子:快速排序

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[]{12,3,1,4,5};
        quickSort(arr);
        printArr(arr);
    }

    private static void quickSort(int[] arr) {
        Objects.requireNonNull(arr);
        process(arr, 0, arr.length - 1);
    }

    private static void process(int[] arr, int left, int right) {
        if(left < right){
            int random = left + (int)(Math.random() * (right - left + 1));
            swap(arr, random, right);
            int mid = partition(arr, left, right);
            process(arr, left, mid - 1);
            process(arr, mid + 1, right);
        }
    }

    private static int partition(int[] arr, int left, int right) {
        int index = left;
        int pivot = left - 1;
        while (index <= right){
            if(arr[index]<= arr[right]){
                swap(arr, index, ++pivot);
            }
            index ++;
        }
        return pivot;
    }

    private static void swap(int[] arr, int i, int j) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

    private static void printArr(int[] arr) {
        Objects.requireNonNull(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

  • quickSort(int[] arr)
    對指定數(shù)組排序,參數(shù)為arr。具體實現(xiàn)委托給process(arr, 0, arr.length - 1)

  • process(int[] arr, int left, int right)
    對arr指定的范圍進行排序,參數(shù)為arr left right,更通用。
    從實現(xiàn)來看,包含如下子過程:

    1. 獲取隨機下標
    2. 與right位置交換
    3. 數(shù)組的partition調(diào)整
    4. 遞歸左、遞歸右

結(jié)論

每一個方法都實現(xiàn)了一個特定的功能,即只做一件事。只不過這件“事”根據(jù)處理邏輯的不同卻有很大差異:可以是一個獨立的基礎操作;也可以是一系列操作的組合。但在當前抽象層面就實現(xiàn)了一個特定功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 一. Java基礎部分.................................................
    wy_sure閱讀 4,031評論 0 11
  • 7種常用的排序算法總結(jié) 2016.04.30PoetryAlgorithm 排序算法:一種能將一串數(shù)據(jù)依照特定的排...
    raining_804f閱讀 869評論 0 0
  • 十大經(jīng)典排序算法 來源:https://github.com/wangguanfu/-Sorting-algori...
    星丶雲(yún)閱讀 833評論 0 7
  • 常聽人言,“舍得,有舍才有得”。可現(xiàn)實中,有誰能準確無誤地判斷何事該舍何時能得,又有誰能恰如其分地把握舍與...
    眉心記憶閱讀 282評論 1 1
  • 今天休息帶著媳婦去附近工廠參觀考察,學到很多知識,了解產(chǎn)品結(jié)構(gòu),每個工藝細節(jié),經(jīng)理很熱情,給我們詳細介紹,廠里每個...
    F風F閱讀 165評論 0 0

友情鏈接更多精彩內(nèi)容