欧美精品手机一级在线播放,中文字幕在线欧美日韩,欧美精品中文字幕亚洲专区,国产免费观看网站

    <mark id="hrvb1"><strong id="hrvb1"></strong></mark>
  • <td id="hrvb1"></td>

    java總結(jié)

    時間:2021-04-07 20:06:30 總結(jié) 我要投稿

    java集合總結(jié)

    java集合總結(jié)1

      java集合類主要負(fù)責(zé)保存、盛裝其他數(shù)據(jù),因此集合類也稱容器類。java集合類分為:set、list、map、queue四大體系。其中set代表無序、不可重復(fù)的集合;list代表有序、可重復(fù)的集合。map代表具有映射關(guān)系的集合;queue代表隊列集合。

    java集合總結(jié)

      java集合類主要由兩個接口派生:Collection和Map,是集合框架的根接口。下面是其接口、子接口和實現(xiàn)類的繼承樹。

      下面就一一介紹四大接口及其實現(xiàn)類。

      Set接口。set集合不允許包含相同的元素。set判斷兩個對象是否相同是根據(jù)equals方法。如果兩個對象用equals方法返回的是true,set不會接受這兩個對象。

      HashSet是set接口的典型實現(xiàn),HashSet按hash算法來存儲集合中的元素。因此具有很好的存儲和查找性能。HashSet判斷兩個元素的標(biāo)準(zhǔn)是兩個元素的equals方法比較相等,同時兩個對象的hasCode()方法返回值也相等。HashSet可以保存null元素。

      List集合代表一個有序集合。集合中的每個元素都有其對應(yīng)的順序索引。Arraylist和vector是list接口的兩個典型實現(xiàn)。他們之間的顯著區(qū)別就是:vector是線性安全的,而arraylist不是。它們兩個都是基于數(shù)組實現(xiàn)的list類。List還有一個基于鏈表實現(xiàn)的LinkedList類。當(dāng)插入、刪除元素的速度非?臁_@個類比較特殊,功能也特別多,即實現(xiàn)了List接口,也實現(xiàn)了Dueue接口(雙向隊列)。可以當(dāng)成雙向隊列使用,也可以當(dāng)成棧使用。

      Queue用于模擬隊列的數(shù)據(jù)結(jié)構(gòu)。LinkedList和ArrayDueue是其兩個比較常用的實現(xiàn)類。

      Map用于保存具有映射關(guān)系的數(shù)據(jù)。Map接口有如下幾個常用的實現(xiàn)類:HashMap、HashTable、TreeMap。TreeMap是基于紅黑樹對TreeMap中所有key進(jìn)行排序。HashMap和HashTable主要區(qū)別有兩點(diǎn):1、Hashtable是線性安全的,因此性能差些。2、HashMap可以使用null作為key或者value。

      集合類還提供了一個工具類Collections。主要用于查找、替換、同步控制、設(shè)置不可變集合。

      上面是對java集合類的一般概述,下面就set、list、map三者之間的關(guān)系進(jìn)行剖析。

      Set與Map的關(guān)系。Map集合中所有key集中起來,就組成了一個set集合。所以Map集合提供SetkeySet()方法返回所有key組成的set集合。由此可見,Map集合中的所有key具有set集合的特征,只要Map所有的key集中起來,它就是一個Set集合,這就實現(xiàn)了Map到Set的`轉(zhuǎn)換。同時,如果把Map中的元素看成key-value的set集合,也可以實現(xiàn)從Set到Map之間的轉(zhuǎn)換。HashSet和HashMap分別作為它們的實現(xiàn)類。兩者之間也挺相似的。HashSet的實現(xiàn)就是封裝了HashMap對象來存儲元素。它們的本質(zhì)是一樣的。類似于HashSet和HashMap的關(guān)系,其實TreeMap和TreeSet本質(zhì)也差不多,TreeSet底層也是依賴TreeMap實現(xiàn)。

      Map與List的關(guān)系。把Map的key-value分開來看,從另一個角度看,就可以把Map與List統(tǒng)一起來。

      Map集合是一個關(guān)聯(lián)數(shù)組,key可以組成Set集合,Map中的value可以重復(fù),所以這些value可以組成一個List集合。但是需要注意的是,實質(zhì)Map的values方法并未返回一個List集合。而是返回一個不存儲元素的Collection集合,換一種角度來看對List集合,它也包含了兩組值,其中一組就是虛擬的int類型的索引,另一組就是list集合元素,從這個意思上看,List就相當(dāng)于所有key都是int型的Map。

      下面講解幾個相似類之間的差異。

      ArrayList和LinkedList。ArrayList是一種順序存儲的線性表,其底層是采用數(shù)組實現(xiàn)的,而LinkedList是鏈?zhǔn)酱鎯Φ木性表。其本質(zhì)就是一個雙向鏈表。對于隨機(jī)存儲比較頻繁的元素操作應(yīng)選用ArrayList,對于經(jīng)常需要增加、刪除元素應(yīng)該選用LinkedList。但總的來說ArrayList的總體性能還是優(yōu)于LinkedList。

      HashSet與HashMap的性能選項。主要有兩個方面:容量和負(fù)載因子(尺寸/容量)。較低負(fù)載因子會增加查詢數(shù)據(jù)的性能,但是會降低hash表所占的內(nèi)存開銷。較高負(fù)載因子則反之,一般對數(shù)據(jù)的查詢比較頻繁,所以一般情況下初始容量應(yīng)該大一點(diǎn),但也不能太大,否則浪費(fèi)內(nèi)存空間。

    java集合總結(jié)2

      一、數(shù)組、集合

      數(shù)組、集合:都是一種容器,用一個對象管理多個對象;

      數(shù)組:不能自動增長;只能存放同類型的元素

      集合:能自動擴(kuò)容;部分集合允許存放不同類型的元素;

      二、學(xué)習(xí)這些集合類要掌握哪些東西:

      1)怎樣得到(選擇)集合對象;

      2)怎樣添加元素

      3)怎樣刪除元素

      4)怎樣循環(huán)遍歷沒一個元素

      三、list、set、map

      collection:父接口;

      Set:接口---一個實現(xiàn)類:HashSet

      List:接口---三個實現(xiàn)類:LinkedList,Vector,ArrayList

      SortedSet:接口---實現(xiàn)類:TreeSet

      1、List:

      List:有序列表,允許存放重復(fù)的元素;

      實現(xiàn)類:

      ArrayList:數(shù)組實現(xiàn),查詢快,增刪慢,線程不安全,輕量級;下標(biāo)也是從0開始;

      LinkedList:鏈表實現(xiàn),增刪快,查詢慢

      Vector:數(shù)組實現(xiàn),線程安全,重量級

      2.Set:

      無序集合,不允許存放重復(fù)的元素;

      實現(xiàn)類HashSet:equals返回true,hashCode返回相同的整數(shù);哈希表;

      子接口SortedSet:對Set排序?qū)崿F(xiàn)類:TreeSet:二叉樹實現(xiàn)的;

      看API:泛型:表示一個對象;

      Iterator:接口,迭代器;

      java.util;

      hasNext();

      next();

      remove();

      Iterable:可迭代的,訪問的;

      ng;實現(xiàn)了可迭代的接口就可以用迭代的方式訪問;

      只需實現(xiàn)iterator();方法即可;Iteratoriterator();

      三種循環(huán)的訪問方式:

      只有實現(xiàn)了Iterable接口的才能用第三種;能用第二種的也一定能用第三種;

      ArrayList:自動擴(kuò)容,是數(shù)組照搬過來的;

      3.Map

      HashMap:鍵值對,key不能重復(fù),但是value可以重復(fù);key的實現(xiàn)就是HashSet;value對應(yīng)著放;

      HashSet的后臺有一個HashMap;初始化后臺容量;只不過生成一個HashSet的話,系統(tǒng)只提供key的訪問;

      如果有兩個Key重復(fù),那么會覆蓋之前的;

      Hashtable:線程安全的

      Properties:java.util.Properties;key和value都是String類型,用來讀配置文件;

      HashMap與Hashtable區(qū)別:

      HashMap線程不安全的,允許null作為key或value;

      Hashtable線程安全的,不允許null作為key或value;

      TreeMap:對key排好序的Map;key就是TreeSet,value對應(yīng)每個key;

      key要實現(xiàn)Comparable接口或TreeMap有自己的構(gòu)造器;

      HashSet:remove(Objecto)的原則看這個對象O的Hashcode和equals是否相等,并不是看是不是一個對象;

      定義一個Map;key是課程名稱,value是Integer表示選課人數(shù);

      map.put(cou,map.get(cou)+newInteger(1));

      四、Hashtable、Properties

      1,Hashtable:實現(xiàn)了Map接口,此類實現(xiàn)一個哈希表,作用和HashMap相同。任何非null對象都可以用作鍵或值。為了成功地在哈希表中存儲和獲取對象,用作鍵的對象必須實現(xiàn)hashCode方法和equals法。

      2,Properties:繼承自Hashtable,比Hashtable更嚴(yán)格屬性列表中每個鍵及其對應(yīng)值都是一個字符串。

      常用方法StringgetProperty(String?key)和setProperty(Stringkey,Stringvalue);

      用法:我在C盤下建了一個名為yy.dat的文件,文件的內(nèi)容為:

      name=hehe

      password=12345

      執(zhí)行以下程序,輸出hehe,可見用Properties可以很方便的解析配置文件

      Propertiesp=newProperties();

      p.load(newFileInputStream("C:yy.dat"));

      System.out.println(p.getProperty("name"))

      五、兩個工具類Arrays和Collections

      1.Arrays、此類包含用來操作數(shù)組(比如排序和搜索)的各種方法。此類還包含一個允許將數(shù)組作為列表來查看的靜態(tài)工廠

      2.Collections、主要提供了在collection上進(jìn)行操作的靜態(tài)方法

      六、遺留的幾個類

      1.Hashtable,作用和HashMap相同,不過它是線程安全的,如果不需要線程安全,應(yīng)該使用HashMap

      2.Enumeration,遺留集合使用枚舉接口來遍歷元素,它有兩個方法,hasMoreElements和nextElement,用法類似Iterator。

      3.Stack,繼承自Vector,實現(xiàn)了棧的功能,提供了push()方法押棧和pop()方法出棧。

      4.BitSet,位集。如果需要高效率的存儲一個位序列,例如一個標(biāo)志序列,請使用位集。它可以對各個位進(jìn)行

      讀取get(i)

      設(shè)置set(i)

      清楚clear(i)

      七、常見筆試題目匯總

      1.Collection和Collections的區(qū)別。

      Collection是集合類的上級接口,繼承與他的接口主要有Set和List.

      Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。

      2.List,Set,Map是否繼承自Collection接口?

      List,Set是,Map不是

      3.兩個對象值相同(x.equals(y)==true),但卻可有不同的hashcode,這句話對不對?

      不對,有相同的hashcode。

      4.你所知道的集合類都有哪些?主要方法?

      最常用的集合類是List和Map。List的具體實現(xiàn)包括ArrayList和Vector,它們是可變大小的列表,比較適合構(gòu)建、存儲和操作任何類型對象的元素列表。List適用于按數(shù)值索引訪問元素的情形。

      Map提供了一個更通用的元素存儲方法。Map集合類用于存儲元素對(稱作"鍵"和"值"),其中每個鍵映射到一個值。

      5.排序都有哪幾種方法?請列舉。用JAVA實現(xiàn)一個快速排序。

      排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數(shù)排序)

      快速排序的偽代碼。

      //使用快速排序方法對a[0:n-1]排序

      從a[0:n-1]中選擇一個元素作為middle,該元素為支點(diǎn)

      把余下的元素分割為兩段left和right,使得left中的元素都小于等于支點(diǎn),而right中的元素都大于等于支點(diǎn)

      遞歸地使用快速排序方法對left進(jìn)行排序

      遞歸地使用快速排序方法對right進(jìn)行排序

      所得結(jié)果為left+middle+right

      6.HashMap和Hashtable的區(qū)別

      都屬于Map接口的類,實現(xiàn)了將惟一鍵映射到特定的值上。

      HashMap類沒有分類或者排序。它允許一個null鍵和多個null值。

      Hashtable類似于HashMap,但是不允許null鍵和null值。它也比HashMap慢,因為它是同步的。

      7.Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用==還是equals()它們有何區(qū)別?

      Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)與否。

      equals()是判讀兩個Set是否相等。

      equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當(dāng)兩個分離的對象的內(nèi)容和類型相配的話,返回真值。

    【java集合總結(jié)】相關(guān)文章:

    java實訓(xùn)報告集合7篇04-15

    java個人年終工作總結(jié)05-04

    計算機(jī)Java實習(xí)報告03-21

    java實訓(xùn)報告(7篇)04-15

    java項目經(jīng)理求職簡歷模板04-18

    java實習(xí)生簡歷自我評價04-18

    java實訓(xùn)報告集錦7篇04-15

    java程序員個人簡歷范文03-02

    java開發(fā)求職簡歷經(jīng)典范文12-17

    JAVA程序員自我推薦信08-18