国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】初識(shí)泛型

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】初識(shí)泛型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

我們來看下面的代碼:

public class Demo03 {
    public static void main(String[] args) {
        MyArray myArray = new MyArray();
        myArray.setValue(0,10);
        myArray.setValue(1,"hello");
        String pos = myArray.getPos(0); //error
        System.out.println(pos);
    }
}

class MyArray {
    Object[] arr = new Object[10];

	//獲取下標(biāo)為pos的元素
    public Object getPos(int pos) {
        return this.arr[pos];
    }
	//在pos位置放入val元素
    public void setValue(int pos,Object val) {
        this.arr[pos] = val;
    }
}

通過上面的代碼我們發(fā)現(xiàn),雖然在這種情況下,當(dāng)前數(shù)組任何數(shù)據(jù)都可以存放,但是,更多情況下,我們還是希望他只能夠持有一種數(shù)據(jù)類型。而不是同時(shí)持有這么多類型。

泛型語法:

class 泛型類名稱<類型形參列表> {
// 這里可以使用類型參數(shù)
}
class ClassName<T1, T2, ..., Tn> {
}
class 泛型類名稱<類型形參列表> extends 繼承類/* 這里可以使用類型參數(shù) */ {
// 這里可以使用類型參數(shù)
}
class ClassName<T1, T2, ..., Tn> extends ParentClass<T1> {
// 可以只使用部分類型參數(shù)
}

我們可以把上面的代碼用泛型進(jìn)行改寫:

public class Demo03 {
    public static void main(String[] args) {
        MyArray<Integer> myArray = new MyArray<>();
        myArray.setValue(0,10);
        myArray.setValue(1,11);
    }
}

class MyArray<T> {
    T[] arr = (T[])new Object[10];

    public T getPos(int pos) {
        return this.arr[pos];
    }
    public void setValue(int pos,T val) {
        this.arr[pos] = val;
    }
}

代碼解釋:
類名后的 尖括號(hào)T 代表占位符,表示當(dāng)前類是一個(gè)泛型類。
不能new泛型類型的數(shù)組,比如T[] t = new T[5];
類型后加入 Integer 指定當(dāng)前類型
不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換
編譯器會(huì)在存放元素的時(shí)候幫助我們進(jìn)行類型檢查。

泛型類的使用

泛型類<類型實(shí)參> 變量名; // 定義一個(gè)泛型類引用
new 泛型類<類型實(shí)參>(構(gòu)造方法實(shí)參); // 實(shí)例化一個(gè)泛型類對(duì)象

比如:

MyArray<Integer> list = new MyArray<Integer>();
//等價(jià)于 MyArray<Integer> list = new MyArray<>();

注意:泛型只能接受引用類型,所有的基本數(shù)據(jù)類型必須使用包裝類。
泛型的上界
在定義泛型類時(shí),有時(shí)需要對(duì)傳入的類型變量做一定的約束,可以通過類型邊界來約束。

class 泛型類名稱<類型形參 extends 類型邊界> {
//
}

比如:

public class MyArray<E extends Number> {
//
}

這樣它就只接受 Number 的子類型作為 E 的類型實(shí)參。

MyArray<Integer> str1; // 正常,因?yàn)?Integer 是 Number 的子類型
MyArray<String> str2; // 編譯錯(cuò)誤,因?yàn)?String 不是 Number 的子類型

我們來看這道練習(xí):寫一個(gè)泛型,實(shí)現(xiàn)一個(gè)方法,方法是求指定類型數(shù)組的最大值

public class Demo02 {
    public static void main(String[] args) {
        FindMaxValue<Integer> tFindMaxValue = new FindMaxValue<>();
        Integer[] array = {1,4,6,2,10};
        Integer max = tFindMaxValue.findMax(array);
        System.out.println(max);
    }
}

//泛型類
//<T extends Comparable<T>>  T一定是實(shí)現(xiàn)了Comparable接口
class FindMaxValue <T extends Comparable<T>> {
    public T findMax(T[] arr) {
        T max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max.compareTo(arr[i])<0){
                max = arr[i];
            }
        }
        return max;
    }
}

上面的代碼我們也可以使用泛型方法來寫文章來源地址http://www.zghlxwxcb.cn/news/detail-727488.html

public class Demo02 {
    public static void main(String[] args) {
        Integer[] array1 = {1,4,6,2,10};
        Integer max1 = FindMaxValue1.findMax(array1);
        System.out.println(max1);
    }
}

class FindMaxValue1 {
    //泛型方法
    public static <T extends Comparable<T>> T findMax(T[] arr) {
        T max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max.compareTo(arr[i])<0){
                max = arr[i];
            }
        }
        return max;
    }
}

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】初識(shí)泛型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • day32 泛型 數(shù)據(jù)結(jié)構(gòu) List

    ?概述 ? ? ? ? JDK1.5同時(shí)推出了兩個(gè)和集合相關(guān)的特性:增強(qiáng)for循環(huán),泛型 ????????泛型可以修飾泛型類中的屬性,方法返回值,方法參數(shù), 構(gòu)造函數(shù)的參數(shù) Java提供的泛型類/接口 Collection, List, Set,Iterator 等 自定義的泛型 public class Student H,W {} 自定義的泛型方法 public

    2024年02月09日
    瀏覽(19)
  • 【數(shù)據(jù)結(jié)構(gòu)】 簡(jiǎn)單認(rèn)識(shí)包裝類與泛型

    【數(shù)據(jù)結(jié)構(gòu)】 簡(jiǎn)單認(rèn)識(shí)包裝類與泛型

    在Java中,由于基本類型不是繼承自O(shè)bject,為了在 泛型代碼 中可以支持基本類型,Java給每個(gè)基本類型都對(duì)應(yīng)了一個(gè)包裝類型。 除了 Integer 和 Character, 其余基本類型的包裝類都是首字母大寫。 裝箱就是自動(dòng)將基本數(shù)據(jù)類型轉(zhuǎn)換為包裝器類型;拆箱就是自動(dòng)將包裝器類型轉(zhuǎn)換

    2024年02月12日
    瀏覽(30)
  • 【java數(shù)據(jù)結(jié)構(gòu)】泛型的初步認(rèn)識(shí)(2)

    【java數(shù)據(jù)結(jié)構(gòu)】泛型的初步認(rèn)識(shí)(2)

    hellohello~,大家好????,這里是E綿綿呀???,如果覺得這篇文章還不錯(cuò)的話還請(qǐng)點(diǎn)贊????收藏??????關(guān)注????,如果發(fā)現(xiàn)這篇文章有問題的話,歡迎各位評(píng)論留言指正,大家一起加油!一起chin up!????? ?? 個(gè)人主頁(yè): E綿綿的博客 ?? 所屬專欄: JAVA知識(shí)點(diǎn)專欄

    2024年04月26日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))-包裝類和泛型

    數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))-包裝類和泛型

    包裝類 在Java中,由于基本類型不是繼承自O(shè)bject,為了在泛型代碼中可以支持基本類型,Java給每個(gè)基本類型都對(duì)應(yīng)了 一個(gè)包裝類型。 基本數(shù)據(jù)類型和對(duì)應(yīng)的包裝類 裝箱和拆箱 裝箱操作,新建一個(gè) Integer 類型對(duì)象,將 i 的值放入對(duì)象的某個(gè)屬性中 拆箱操作,將 Integer 對(duì)象中

    2024年02月11日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)(一)】初識(shí)數(shù)據(jù)結(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)(一)】初識(shí)數(shù)據(jù)結(jié)構(gòu)

    ?博主主頁(yè): 33的博客? ?文章專欄分類: Java從入門到精通? ??我的代碼倉(cāng)庫(kù): 33的代碼倉(cāng)庫(kù)?? ?????? 關(guān)注我?guī)銓W(xué)更多數(shù)據(jù)結(jié)構(gòu)知識(shí) 數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ),組織數(shù)據(jù)的方式,指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,從這篇文章開始,我們將一起進(jìn)入數(shù)

    2024年04月09日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu)----基本封裝、包裝類、裝箱與拆箱、泛型詳解

    數(shù)據(jù)結(jié)構(gòu)----基本封裝、包裝類、裝箱與拆箱、泛型詳解

    在Java中,由于基本類型不是繼承自O(shè)bject,為了在泛型代碼中可以支持基本類型,Java給每個(gè)基本類型都對(duì)應(yīng)了一個(gè)包裝類型。 基本數(shù)據(jù)類型 包裝類 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 除了 Integer 和 Character, 其余基本類型的包裝類都是

    2024年01月23日
    瀏覽(21)
  • 探索泛型與數(shù)據(jù)結(jié)構(gòu):解鎖高效編程之道

    探索泛型與數(shù)據(jù)結(jié)構(gòu):解鎖高效編程之道

    在當(dāng)今信息爆炸的時(shí)代,數(shù)據(jù)結(jié)構(gòu)和算法成為了程序員必備的核心技能。而泛型作為Java語言中的一項(xiàng)強(qiáng)大特性,為數(shù)據(jù)結(jié)構(gòu)和算法的實(shí)現(xiàn)提供了更高效、更安全的方式。本文將深入探討泛型的概念、使用場(chǎng)景以及結(jié)合數(shù)據(jù)結(jié)構(gòu)的應(yīng)用,為您打開高效編程之道。 1.1 為什么使用

    2024年02月13日
    瀏覽(25)
  • C#學(xué)習(xí)筆記--數(shù)據(jù)結(jié)構(gòu)、泛型、委托事件等進(jìn)階知識(shí)點(diǎn)

    C#學(xué)習(xí)筆記--數(shù)據(jù)結(jié)構(gòu)、泛型、委托事件等進(jìn)階知識(shí)點(diǎn)

    ArrayList 元素類型以O(shè)bject類型存儲(chǔ),支持增刪查改的數(shù)組容器。 因而存在裝箱拆箱操作,謹(jǐn)慎使用。 ArrayList和數(shù)組區(qū)別? ArrayList使用不用說明固定長(zhǎng)度,數(shù)組則需要 數(shù)組存儲(chǔ)的是指定類型的,ArrayList是Object ArrayList存在裝箱拆箱,數(shù)組不存在 ArrayList數(shù)組長(zhǎng)度用Count獲取 而數(shù)組

    2024年02月08日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)】 初識(shí)集合框架

    【數(shù)據(jù)結(jié)構(gòu)】 初識(shí)集合框架

    這里博主將簡(jiǎn)單介紹一下集合框架,想要詳細(xì)了解的可以點(diǎn)擊下方鏈接進(jìn)行查看 java集合官方教程 Java 集合框架 Java Collection Framework ,又被稱為容器 container ,是定義在 java.util 包下的一組接口 interfaces 和其實(shí)現(xiàn)類 classes 。 其主要表現(xiàn)為將多個(gè)元素 element 置于一個(gè)單元中,用于

    2024年02月13日
    瀏覽(18)
  • 【數(shù)據(jù)結(jié)構(gòu)】初識(shí)

    【數(shù)據(jù)結(jié)構(gòu)】初識(shí)

    ???博客主頁(yè):江池俊的博客 ? 收錄專欄:數(shù)據(jù)結(jié)構(gòu)探索 ??如果覺得博主的文章還不錯(cuò)的話,請(qǐng)點(diǎn)贊??收藏?? 三連支持一下博主?? 目錄 一、數(shù)據(jù)結(jié)構(gòu)的基本認(rèn)知 1.什么是數(shù)據(jù)結(jié)構(gòu) ??數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)的區(qū)別 2.什么是算法 ? 3.數(shù)據(jù)結(jié)構(gòu)和算法的重要性 4.如何學(xué)好數(shù)據(jù)結(jié)

    2024年02月16日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包