Java集合總結,泛型機制,可變引數

2021-08-30 11:37:20 字數 2189 閱讀 4090

底層實現

優缺點執行緒是否安全

效率適用場景

arraylist

陣列查詢易,增刪難否高

單執行緒,多查詢,少增刪的程式

vector

陣列查詢易,增刪難是低

多執行緒,多查詢,少增刪的程式

linkdelist

鍊錶查詢難,增刪易否高

單執行緒,多增刪,少查詢的程式

提問:什麼是泛型

回答:所謂泛型就是指是一種把型別的明確放到建立該類物件的時候或者呼叫該類方法的時候在確定。請看下面這個例子

//定義乙個泛型類

public class myclass

class test

}

public class myclass

}class test

}

提問:可以定義乙個泛型介面嗎

回答:當然可以,請看這裡

//定義乙個泛型介面

public inte***ce myinte***ce

class test implements myinte***ce

}

提問:為什麼要使用泛型,直接定義不就好了嗎,這樣豈不多此一舉?

回答:既然不好理解,那我們看一段**吧

//如果我們預先不知道需要定義的變數是什麼型別,我們就可以把它定義成object型別,可以接收任意型別

public class objectdemo

public void setobject(object object)

}class test

}

繼續回答:上面這段**雖然實現了可以接收任意的物件型別,但是在實際的使用中,會有型別轉換的問題。這樣就不是很方便的,所以泛型應運而生。

public class demo

public void sett(t t)

}class testdemo

}

基本格式:public voidtest(資料類...變數名) 

請看這麼一段**:

public class changepara 

//普通方法重寫

public static void test(double d1)

public static void test(double d1, double d2)

public static void test(double d1, double d2, double d3)

}

如果我說可變引數可以一句**實現上面這一堆,你們會信嗎?不信不行,請看 

public class changepara 

//可變引數

public static void test(double...d)

}

提問:這麼厲害,究竟如何實現的?

回答:其實他的頂層是將引數存入乙個陣列當中,這樣就可以存下同乙個型別的多個引數,成百上千都不是問題的。 

提問:arraylist集合遍歷一共有幾種方式?

回答:應該有四種

再問:請分別用四種方式遍歷集合

public class arraylistdemo 

//方式2 迭代器遍歷

iterator iterator = arraylist.iterator(); //獲取迭代器物件

while (iterator.hasnext())

//方式3 列表迭代器遍歷

listiterator listiterator = arraylist.listiterator();

while (listiterator.hasnext())

//方式4 增強for迴圈遍歷

for(string s : arraylist)

}}

Set集合 排序 泛型 可變參

set集合的基本使用 public class setdemo 獲取雜湊值的 public class student public student string name,int age public string getname public void setname string name p...

Java泛型總結(集合泛型 方法泛型 萬用字元)

1,泛型的限定 public static void main string args swap new string,1,2 swap new integer,2,3 泛型引數必須為引用型別 2,泛型方法 泛型類定義的反應,在整個類中有效,如果被方法使用,那麼泛型類的物件明確要操作的具體型別後,所...

java泛型集合

首先我們先來了解什麼是集合 集合就是用來組織和管理物件。集合特點 1.集合儲存的只能是物件 2.使用物件的引用,物件的儲存還是在堆記憶體中 3.儲存不同型別的資料 眾所周知,集合可以儲存不同型別的資料,而對於不同型別而言就會涉及到型別轉換,所以但是集合而言就會存在型別轉換問題,所以我們引用了泛型,使...