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

为了实现代码的可读性、可扩展性等,在不同层面对实现逻辑的抽象与封装。

举个例子:快速排序

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)
    对指定数组排序,参数为arr。具体实现委托给process(arr, 0, arr.length - 1)

  • process(int[] arr, int left, int right)
    对arr指定的范围进行排序,参数为arr left right,更通用。
    从实现来看,包含如下子过程:

    1. 获取随机下标
    2. 与right位置交换
    3. 数组的partition调整
    4. 递归左、递归右

结论

每一个方法都实现了一个特定的功能,即只做一件事。只不过这件“事”根据处理逻辑的不同却有很大差异:可以是一个独立的基础操作;也可以是一系列操作的组合。但在当前抽象层面就实现了一个特定功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 4,072评论 0 11
  • 7种常用的排序算法总结 2016.04.30PoetryAlgorithm 排序算法:一种能将一串数据依照特定的排...
    raining_804f阅读 879评论 0 0
  • 十大经典排序算法 来源:https://github.com/wangguanfu/-Sorting-algori...
    星丶雲阅读 843评论 0 7
  • 常听人言,“舍得,有舍才有得”。可现实中,有谁能准确无误地判断何事该舍何时能得,又有谁能恰如其分地把握舍与...
    眉心记忆阅读 292评论 1 1
  • 今天休息带着媳妇去附近工厂参观考察,学到很多知识,了解产品结构,每个工艺细节,经理很热情,给我们详细介绍,厂里每个...
    F风F阅读 170评论 0 0

友情链接更多精彩内容