中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

想學(xué)網(wǎng)站建設(shè)開發(fā)代運(yùn)營一般收費(fèi)

想學(xué)網(wǎng)站建設(shè)開發(fā),代運(yùn)營一般收費(fèi),wordpress注冊跳過郵箱驗(yàn)證,網(wǎng)站開發(fā)設(shè)計(jì)的技術(shù)目錄 一、泛型 1、概述 2、通配符 3、有界類型 二、集合 1、概述 2、迭代器接口 三、集合類 1、Collection接口 2、List接口 3、Set接口 4、Queue接口 5、Map接口 四、集合轉(zhuǎn)換 五、集合工具類 一、泛型 1、概述 從JDK5.0開始,Java引入泛型類型&…

目錄

一、泛型

1、概述

2、通配符?

3、有界類型

二、集合

1、概述

2、迭代器接口

三、集合類

1、Collection接口

2、List接口

3、Set接口

4、Queue接口

5、Map接口?

四、集合轉(zhuǎn)換?

五、集合工具類


一、泛型

1、概述

? ? ? ? 從JDK5.0開始,Java引入泛型類型,將數(shù)據(jù)類型實(shí)現(xiàn)參數(shù)化,提高代碼了重用性,使得程序更加靈活、安全和簡潔。

? ? ? ? 泛型可以被使用于類、接口、方法的定義中,實(shí)現(xiàn)泛型類、泛型接口、泛型方法。

? ? ? ? 泛型類的一般定義方法,以及實(shí)現(xiàn)實(shí)例化對象,可以參考C++的泛型使用方法。

? ? ? ? 下面給出一個(gè)實(shí)例:

//創(chuàng)建泛型類
public class Generic <T>{private T data;public Generic(T data){this.data=data;}public void show(){System.out.println("數(shù)據(jù)類型為:"+data.getClass().getName());System.out.println("數(shù)據(jù)為:"+this.data);}
}
//主函數(shù)
public class Demo {public static void main(String[]args){Generic<String> s=new Generic<String>("張三");   //創(chuàng)建實(shí)例,實(shí)例化類型為StringGeneric<Integer> i=new Generic<Integer>(123);    //創(chuàng)建實(shí)例,實(shí)例化類型為Integers.show();i.show();}
}

輸出:
????????數(shù)據(jù)類型為:java.lang.String

????????數(shù)據(jù)為:張三

????????數(shù)據(jù)類型為:java.lang.Integer

????????數(shù)據(jù)為:123

2、通配符?

? ? ? ? 當(dāng)使用一個(gè)泛型類時(shí),應(yīng)該為泛型類傳入一個(gè)實(shí)參,否則會(huì)提出泛型警告,但如果在定義一個(gè)方法時(shí),無法確定泛型實(shí)例化變量類型,那么需要使用通配符“?”來表示一個(gè)未知類型,從而解決不能動(dòng)態(tài)選擇實(shí)例的缺點(diǎn)。

? ? ? ? 緊接著上一個(gè)實(shí)例,添加這樣一個(gè)方法:

public static void showtype(Generic <?> g)
{g.show();
}

? ? ? ? 主函數(shù)使用showtype(i)和showtpe(s)同樣可以達(dá)到i.show(),s.show()的作用,這也是多態(tài)的另一種體現(xiàn)。

3、有界類型

? ? ? ? 有界類型分為兩種:extends,super,一般用來在泛型的尖括號(hào)<>中指代聲明類型的上界和下界。

? ? ? ? 在泛型類中使用:

public class Generic <T extends Math>? ? //指定T類型的上界為Math

public class Generic?<T super String>? ? ? ?//指定T類型的下界為String

? ? ? ? 在泛型方法中使用:

public class Generic <? extends Math>{?????????//指定T類型的上界為Math

? ? ? ? ? ? ? //方法體...

}? ?

public class Generic?<? super String>?{? ? ? ? ? //指定T類型的下界為String

? ? ? ? ? ? ? //方法體...

}

二、集合

1、概述

? ? ? ? Java中的集合類類似于C++中的STL,用于實(shí)現(xiàn)一些常見的數(shù)據(jù)結(jié)構(gòu)。Java的集合類主要由兩個(gè)接口派生出來:Collection和Map

? ? ? ? Collection集合體系下有三個(gè)接口,Set(無序,不可重復(fù)的集合)、List(有序、可以重復(fù)的集合)、Queue集合(隊(duì)列集合)

? ? ? ? Map集合用于保存具有映射關(guān)系的數(shù)據(jù),由Key-Value鍵值對組成,key用于標(biāo)識(shí)集合中的每項(xiàng)數(shù)據(jù),所以不可重復(fù)。

2、迭代器接口

? ? ? ? 迭代器可以采用統(tǒng)一方式,對Collection集合中的元素進(jìn)行遍歷操作,由于Iterable接口是Collection接口的父接口,所以迭代器的集合類可迭代的,都支持foreach循環(huán)遍歷。

? ? ? ? Iterator接口中的方法:

boolean hasNext()判斷是否有下一個(gè)可訪問的元素
E next()返回可訪問的下一個(gè)元素

? ? ? ? 迭代器接口實(shí)現(xiàn):

import java.util.ArrayList;
import java.util.Iterator;
public class test {public static void main(String[] args){ArrayList<String>list=new ArrayList<>();list.add("apple");list.add("banana");list.add("pear");Iterator<String> iterator=list.iterator();    //通過泛型對象調(diào)用iterator()方法while(iterator.hasNext())                     //for each遍歷{System.out.println(iterator.next());}}
}

三、集合類

1、Collection接口

? ? ? ? Collection接口作為Set、Queue、List接口的父接口,本身沒有提供獲取某個(gè)元素的方法,但可以通過iterator()方法來遍歷集合中所有元素。

? ? ? ? 對于產(chǎn)生的異常:不建議將同一個(gè)集合Collection中存儲(chǔ)不同類型的對象,不要將不兼容的對象添加進(jìn)集合中,另外在執(zhí)行add、remove這類指令時(shí)也容易引發(fā)異常。

? ? ? ? 一般來說在集合類的使用中不推薦使用Collection類。

2、List接口

? ? ? ? List是Collection接口的子接口,用于存放有序、可重復(fù)的集合。

? ? ? ? List接口的常用方法:

?????????在List接口中有兩個(gè)實(shí)現(xiàn)類,ArrrayList(數(shù)組列表)和Vector(向量),完全繼承List的所有方法。

? ? ? ? ArrayList和Vector的區(qū)別在于ArrayList是非線程安全的,而Vector是線程安全的,所以推薦使用ArrayList集合。

? ? ? ? ArrayList進(jìn)行for-each遍歷:

import java.util.ArrayList;
public class ArrayListDemo {public static void main(String[] args){ArrayList<String> list= new ArrayList<String>();list.add("北京");list.add("南京");list.add("上海");for(String e:list)                  //for each遍歷{System.out.println(e);}list.remove("北京");                //刪除元素北京       System.out.println("第一個(gè)元素為:"+list.get(0));    //獲取第一個(gè)元素}
}

輸出:

北京

南京

上海

第一個(gè)元素為:南京

????????另外Vector提供了一個(gè)Stack子類,用于模擬“棧”,有三個(gè)方法:peek(查看棧頂元素),pop(出棧),push(入棧)。

Stack<String> s=new Stack<String>();
for(int i=0;i<=5;i++)s.push(String.valueOf(i));
System.out.println("Stack入棧元素:");
for(int i=0;i<s.size();i++)System.out.println(s.get(i));
System.out.println("Stack出棧元素:");
for(int i=0;i<=5;i++)System.out.println(s.pop());

輸出:?

Stack入棧元素:

1

2

3

4

5

Stack出棧元素:

5

4

3

2

1

3、Set接口

? ? ? ? Set接口是一個(gè)不包含重復(fù)元素的集合,一般用于執(zhí)行數(shù)學(xué)上的集合運(yùn)算,如交集、并集,HashSet、TreeSet和EnumSet是Set接口的常見實(shí)現(xiàn)類。

? ? ? ? HashSet:使用Hash算法存儲(chǔ)集合中的元素,具有良好的存取查找功能。

? ? ? ? TreeSet:采用Tree算法可以保證元素處于排序狀態(tài),TreeSet支持兩種排序方式:自然排序和定制排序,默認(rèn)情況采用自然排序。

? ? ? ? EnumSet:為枚舉類設(shè)計(jì)的集合類,其所有元素必須為指定的枚舉類型,EnumSet中元素是有序的,按照枚舉值順序進(jìn)行排序。

? ? ? ? 在TreeSet類進(jìn)行排序時(shí),會(huì)調(diào)用類內(nèi)方法compareTo方法,所以我們可以通過重寫默認(rèn)排序時(shí)調(diào)用的compareTo方法,來實(shí)現(xiàn)排序的過程。

4、Queue接口

? ? ? ? Queue為隊(duì)列結(jié)構(gòu),采用先進(jìn)先出方式排序每個(gè)元素,在繼承于Collection接口的基礎(chǔ)上,也提供了相應(yīng)的隊(duì)列的插入、獲取、查找操作。

? ? ? ? Queue接口有若干實(shí)現(xiàn)類:LinkedList(鏈表)、PriorityQueue(優(yōu)先隊(duì)列)、Deque(雙向隊(duì)列)。

(1)Queue

? ? ? ? Queue接口的方法:

? ? ? ?注意:Queue不能作為實(shí)例對象,不要?jiǎng)?chuàng)建Queue對象,只能創(chuàng)建Queue的子類對象。

Queue <String>q=new PriorityQueue<>();   //可以
Queue <String>q=new Queue<>();           //不可以

(2)Deque

????????Deque是Queue的子接口,支持兩端插入和移除元素。

????????Deque接口的方法:?

(3)LinkedList

? ? ? ? LinkedList鏈表是Deque和List兩個(gè)接口的實(shí)現(xiàn)類,兼具隊(duì)列和列表兩種特性,但LinkedList不是線程安全的,當(dāng)出現(xiàn)多線程訪問同一實(shí)例時(shí),必須手動(dòng)同步。

? ? ? ? 對鏈表進(jìn)行相應(yīng)操作的代碼:

import java.util.LinkedList;
public class linkedlistdemo {public static void main(String[] args){LinkedList<String> books=new LinkedList();books.offer("數(shù)據(jù)庫");books.push("Java");books.offerFirst("C++");books.offerLast("操作系統(tǒng)");for(String i:books)                //遍歷元素System.out.println(i);System.out.println("鏈表第一個(gè)元素:"+books.peekFirst());   System.out.println("鏈表最后一個(gè)元素:"+books.peekLast());System.out.println("鏈表彈出棧頂元素:"+books.pop());System.out.println("鏈表彈出棧底元素:"+books.pollLast());System.out.println("鏈表第二個(gè)元素:"+books.get(1));}
}

?(4)ArrayDeque

? ? ? ??ArrayDeque(數(shù)組雙端隊(duì)列),是Deque實(shí)現(xiàn)類,不繼承于List,所以不能用add、remove進(jìn)行添加、刪除,但上面的鏈表在作為List子類情況下,還是改寫了add和remove方法,使用offerfirst、pollfirst這一類棧相關(guān)的方法,其實(shí)更好理解一些。

? ? ? ? ArrayDeque沒有容量限制,不是線程安全的,禁止添加null元素,在作為堆棧時(shí)快于Stack,作為隊(duì)列時(shí)快于LinkedList。

? ? ? ? ArrayDeque的入隊(duì)、出隊(duì)、選擇可以參考鏈表的操作,都是依賴于Deque的父類方法。

(5)PriorityQueue

? ? ? ? PriorityQueue是Queue接口的實(shí)現(xiàn)類,優(yōu)先級隊(duì)列,可以按照自然排序、或者定制排序(就是修改compareTo),優(yōu)先級隊(duì)列不允許使用null元素,在自然順序下也不允許插入不可比較對象,定制排序可以改compareTo的。

? ? ? ? PriorityQueue要使用Queue接口內(nèi)的方法,所以注意使用poll彈出,offer入棧。

import java.util.PriorityQueue;
import java.util.Queue;public class QueueDemo {public static void main(String[] args){Queue <String>q=new PriorityQueue<>();q.offer("張三");q.offer("李四");q.offer("王五");System.out.println("隊(duì)列第一個(gè)元素,并移除"+q.poll());for(String i:q)System.out.println(i);} 
}

5、Map接口?

? ? ? ? Map接口作為與Collection并列的一個(gè)接口,使用key-value鍵值對映射關(guān)系進(jìn)行存儲(chǔ)。

? ? ? ? Map常用方法:

? ? ? ? Map類有兩個(gè)實(shí)現(xiàn)類,分別為HashMap和TreeMap,類似HashSet和TreeSet的區(qū)別,HashMap是無序的映射集合,允許使用null作為鍵或值,TreeMap可以進(jìn)行自然排序或定制排序。

四、集合轉(zhuǎn)換?

? ? ? ? 集合轉(zhuǎn)換方法:

(1)entrySet():返回一個(gè)包含了Map中元素的集合,每個(gè)元素都包括鍵和值

(2)keySet():返回Map中所有鍵的集合

(3)values():返回Map中所有值的集合 (注意不是valueSet)

HashMap<Integer,String>hm=new HashMap();        //創(chuàng)建哈希集合
/*省略若干增刪操作
*/
Set<Entry<Integer,String>>set=hm.entrySet();    //返回鍵值對
set<Integer>keyset=hm.keySet();                 //返回鍵
set<String>=hm.values();                        //返回值

五、集合工具類

? ? ? ? 集合工具類(輔助工具類)有兩個(gè):Collections和Arrays。

? ? ? ? Collections提供對集合的常用靜態(tài)方法,而Arrays工具類提供對數(shù)組的常用靜態(tài)方法。

? ? ? ? Collections工具類方法:

? ? ? ? Arrays工具類方法:

參考書籍:《Java 8 基礎(chǔ)應(yīng)用與開發(fā)》QST青軟實(shí)訓(xùn)編?

http://www.risenshineclean.com/news/48919.html

相關(guān)文章:

  • 蚌埠公司做網(wǎng)站網(wǎng)絡(luò)推廣員為什么做不長
  • 做的網(wǎng)站怎么放在網(wǎng)上百度的人工客服電話
  • h5頁面生成青島seo精靈
  • 微信朋友圈推廣平臺(tái)seo銷售代表招聘
  • golang做網(wǎng)站怎么樣微信群免費(fèi)推廣平臺(tái)
  • 網(wǎng)站做違法的事情投訴百度推廣賬號(hào)登錄入口
  • 香港空間送網(wǎng)站如何利用seo賺錢
  • 昌平網(wǎng)站建設(shè)騰訊會(huì)議付費(fèi)
  • 什么是網(wǎng)站的后臺(tái)垂直搜索引擎
  • 建設(shè)思想政治教育專題網(wǎng)站個(gè)人網(wǎng)站首頁設(shè)計(jì)
  • 誰可以教我做網(wǎng)站南京廣告宣傳公司seo
  • 付給招聘網(wǎng)站的費(fèi)用怎么做分錄深圳整站seo
  • 深圳網(wǎng)站建設(shè)智能 樂云踐新淘寶站內(nèi)推廣方式有哪些
  • 男人最愛的做網(wǎng)站站長之家統(tǒng)計(jì)
  • 怎樣創(chuàng)建網(wǎng)站詳細(xì)步驟seo技術(shù)優(yōu)化服務(wù)
  • 有經(jīng)驗(yàn)的南昌網(wǎng)站制作百度關(guān)鍵詞優(yōu)化策略
  • 廣告網(wǎng)站模板下載 迅雷下載安裝網(wǎng)站維護(hù)費(fèi)一年多少錢
  • WordPress網(wǎng)站論文微信小程序開發(fā)文檔
  • 免費(fèi)模板建站寧德市醫(yī)院東僑院區(qū)
  • 做網(wǎng)站自動(dòng)賺錢網(wǎng)絡(luò)推廣都需要做什么
  • 佛山專注網(wǎng)站制作細(xì)節(jié)長沙縣網(wǎng)絡(luò)營銷咨詢
  • 網(wǎng)站開發(fā)工程師培訓(xùn)seo是什么職業(yè)
  • 兼職網(wǎng)站開發(fā)全部視頻支持代表手機(jī)瀏覽器
  • 三河建設(shè)局網(wǎng)站熱門seo推廣排名穩(wěn)定
  • 網(wǎng)站備案 修改優(yōu)化seo廠家
  • 網(wǎng)站制作 徐州晉江怎么交換友情鏈接
  • 怎樣到國外做合法博彩法網(wǎng)站河南鄭州最新消息
  • 錦州做網(wǎng)站全網(wǎng)營銷與seo
  • 幫別人做設(shè)計(jì)圖的網(wǎng)站渠道推廣策略
  • 旺旺號(hào)查詢網(wǎng)站怎么做百度推廣個(gè)人怎么開戶