最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Java中怎么利用泛型實(shí)現(xiàn)數(shù)組排序

這篇文章將為大家詳細(xì)講解有關(guān)Java中怎么利用泛型實(shí)現(xiàn)數(shù)組排序,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)專注于萬(wàn)源企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。萬(wàn)源網(wǎng)站建設(shè)公司,為萬(wàn)源等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

1. 整數(shù)數(shù)組的順序收縮

public static int seqSearch(int[] arr, int first, int last, int target) {        for (int i = first; i < last; i++)            if (arr[i] == target)                return i;            return -1;    }

1.1對(duì)上面的方法進(jìn)行抽象,***讓我們想到就是,使用java的Object的引用,來(lái)實(shí)現(xiàn)通用方法

public static int seqSearch(Object[] arr, int first, int last, Object target) {        for (int i = first; i < last; i++)            if (arr[i].equals(target))                return i;            return -1;    }

2.1這樣看來(lái)好像Object的引用好像非常方便,而且第二個(gè)順序搜索可以使用到float,double,String等等。如果我們要進(jìn)一步研究就會(huì)出現(xiàn)問(wèn)題

public static void selectionSort(int[] arr) {        int n = arr.length, smallIndex = 0;        for (int i = 0; i < n; i++) { // 遍歷array數(shù)組            smallIndex = i;            for (int j = i + 1; j < n; j++)                if (arr[smallIndex] > arr[j]) // 選擇最小的索引j                    smallIndex = j;            // if (smallIndex != i) {            exchange(arr, i, smallIndex);// 交換array[i]與 min(array[i+1,..,n])            // }        }    }

2.2上面的代碼是一個(gè)順序排序的算法,若果我們要寫(xiě)一個(gè)通用方法,就必須把object類型強(qiáng)制裝換為一個(gè)實(shí)現(xiàn)Comparable接口的方法。

JVM在處理類型強(qiáng)制裝換的時(shí)候就會(huì),拋出一個(gè)警告:uncheck cast

@SuppressWarnings("unchecked")    public static void selectionSort(Object[] arr) {            int n = arr.length, smallIndex = 0;        for (int i = 0; i < n; i++) { // 遍歷array數(shù)組            smallIndex = i;            for (int j = i + 1; j < n; j++)                if (((Comparable)arr[smallIndex]).compareTo(((Comparable)arr[j])) > 0) // 選擇最小的索引j                    smallIndex = j;            // if (smallIndex != i) {            exchange(arr, i, smallIndex);// 交換array[i]與 min(array[i+1,..,n])            // }        }    }

有此可以看出使用Object引用來(lái)處理通用問(wèn)題,當(dāng)使用實(shí)參如果沒(méi)有實(shí)現(xiàn)Comparable接口,編譯器會(huì)拋出一個(gè)castClassException的運(yùn)行時(shí)異常。這樣的程序是不安全的。

3.1使用Object引用來(lái)泛化一個(gè)算法(如順序搜索)。通過(guò)使用數(shù)組的Object引用和目標(biāo)值, 只要數(shù)據(jù)類型實(shí)現(xiàn)了equals方法,算法中要比較大小的數(shù)據(jù)類必須實(shí)現(xiàn)Comparable接口,現(xiàn)在我們來(lái)用java泛型來(lái)解決這個(gè)問(wèn)題

public static > void selectionSort(T[] arr){        int n = arr.length;        int smallIndex;        for (int i = 0; i < n-1; i++) {            smallIndex=i;            for (int j = i+1; j < n; j++)                 if (arr[j].compareTo(arr[smallIndex])<0)                     smallIndex=j;            exchange(arr, smallIndex, i);        }    }

在Arrays類中的靜態(tài)方法 selectionSort(),這個(gè)方法處理的是整數(shù)類型。要用泛型版本來(lái)實(shí)現(xiàn)這個(gè)算法, 由于要泛型類型數(shù)組T[]中的兩個(gè)元素要進(jìn)行比較,所以傳遞實(shí)參的對(duì)象類型或其超類必須實(shí)現(xiàn)Comparable接口。

關(guān)于Java中怎么利用泛型實(shí)現(xiàn)數(shù)組排序就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


分享文章:Java中怎么利用泛型實(shí)現(xiàn)數(shù)組排序
本文URL:http://fisionsoft.com.cn/article/psocgi.html