JAVA泛型

java泛型

泛型:參數化類型.將具體的類型參數化,將類型定義爲參數形式.在調用時傳入具體的類型
泛型的本質是爲了參數化類型(在不創建新的類型的情況下,通過泛型指定的不同類型來控制形參具體限制的類型)。

特點

泛型類型在邏輯上看以看成是多個不同的類型,實際上都是相同的基本類型。

泛型的使用

在泛型使用過程中,操作的數據類型被指定爲一個參數,這種參數類型可以用在類、接口和方法中,分別被稱爲泛型類、泛型接口(自學)、泛型方法。


/**
 * @Author HuangTang
 * @Date 2019/9/19 - 8:22
 */
class objectToolDemon<T>{
    private T obj;
    public T getobj(){
        return obj;
    }
    public void setobj(T obj){
        this.obj=obj;
    }
}
public class tooldemo{
    public static void main(String[] args) {
        objectToolDemon ot = new objectToolDemon();
        ot.setobj(new String("劉備"));
        String s = (String)ot.getobj();
        System.out.println(s);
        ot.setobj(new Integer(40));
        Integer i = (Integer) ot.getobj();
        System.out.println(i);

    }
}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PRua0PJ4-1573690491410)(./1568853323690.png)]


/**
 * @Author HuangTang
 * @Date 2019/9/19 - 8:22
 */
class objectToolDemon<T>{
    private T obj;
    public T getobj(){
        return obj;
    }
    public void setobj(T obj){
        this.obj=obj;
    }
}
public class tooldemo{
    public static void main(String[] args) {
        objectToolDemon<String> ot = new objectToolDemon<String>();
        //泛型的自動偵測
        ot.setobj(new String("劉備"));
        String s = (String)ot.getobj();
        System.out.println(s);
//        ot.setobj(new Integer(40));
//        Integer i = (Integer) ot.getobj();
//        System.out.println(i);

    }
}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NWyPFjyq-1573690491414)(./1568854420446.png)]


/**
 * @Author HuangTang
 * @Date 2019/9/19 - 8:35
 */


class objectTool{
    public void show(String s){
        System.out.println(s);
    }
    public void show(boolean b){
        System.out.println(b);
    }
    public void show(Integer i){
        System.out.println(i);
    }
}
public class methodDemo {
    public static void main(String[] args) {
        objectTool ot2 = new objectTool();
        ot2.show("hello");
        ot2.show(true);
        ot2.show(123);
    }
}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fCO1TzHs-1573690491416)(./1568853695273.png)]


/**
 * @Author HuangTang
 * @Date 2019/9/19 - 8:35
 */

//泛型類
class objectTool<T>{
//泛型方法
    public <T> void show(T s){
        System.out.println(s);
    }
//    public void show(boolean b){
//        System.out.println(b);
//    }
//    public void show(Integer i){
//        System.out.println(i);
//    }
}
public class methodDemo {
    public static void main(String[] args) {
        objectTool ot2 = new objectTool();
        ot2.show("hello");
        ot2.show(true);
        ot2.show(123);
    }
}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4qZ94Xhr-1573690491417)(./1568854811847.png)]

課後任務

  1. 泛型接口
  2. jdk’1.5 中泛型新增內容
    通配符
    extend : 向下限定
    super: 向上限定
  3. 查看ArrayList源代碼

set

import java.util.HashSet;
import java.util.Set;

/**
 * @Author HuangTang
 * @Date 2019/9/19 - 9:17
 */
public class studySet {
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>();
        set.add("java1");
        set.add("java2");
        set.add("java3");
        set.add("java4");
        set.add("java5");
        set.add("java6");
        set.add("java6");
        //遍歷集合:  1. toarray 2.iterator  3.此處不可用 .size()+.get() 4.增強for
        for(String s:set){
            System.out.println(s);
        }
    }
}

第一次運行

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zbg36V00-1573690491418)(./1568856346630.png)]

第二次運行
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TpoJzJl4-1573690491418)(./1568856373405.png)]

#hashset
由hash表(hashmap)支持
一個hash值對應一個集合
hash值相同的歸爲一類
hashset元素唯一性: 先比較hashcode 再用equals比較值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章