久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java集合

 jacklopy 2010-08-03
 Java集合 收藏
  Java數(shù)組是一個(gè)Java對(duì)象,,數(shù)組的長(zhǎng)度是固定的,,在同一個(gè)數(shù)組中只能夠存放相同類型的數(shù)據(jù),,數(shù)組可以存放基本類型的數(shù)據(jù),,也可以存放引用類型的數(shù)據(jù),。在創(chuàng)建數(shù)組對(duì)象時(shí),,必須指定數(shù)組對(duì)象的長(zhǎng)度,,數(shù)組一旦創(chuàng)建,,它的長(zhǎng)度就不能再變
  (1)創(chuàng)建數(shù)組對(duì)象(即new一個(gè)數(shù)組時(shí))要指定數(shù)組的長(zhǎng)度,,數(shù)組的長(zhǎng)度一旦指定,就不能夠再發(fā)生變化,;
  (2)同一個(gè)數(shù)組中的數(shù)據(jù)的類型必須相同,,可以是基本類型,也可以是引用類型。
----------------------------------------------------------------------------------------------------------------------------------------------------
  Java中的集合
  (1)集合可以存儲(chǔ)和操縱數(shù)目不固定的一組數(shù)據(jù)
  (2)集合中的元素只能夠是引用類型,,不能夠是基本類型
  (3)集合分為以下三種
          a. Set     不排序             不重復(fù)
          b. List     按索引位置排序  可以重復(fù)  允許按照對(duì)象在集合中的索引位置檢索對(duì)象(這點(diǎn)類似于數(shù)組)
          c. Map    集合中的每一個(gè)元素包含一對(duì)鍵對(duì)象和值對(duì)象
                        集合中沒(méi)有重復(fù)的鍵對(duì)象,,值對(duì)象可以重復(fù)
   (4)Collection接口(注意引用的概念)
           a.Collection接口聲明適用于Java集合(只有Set和List)的通用方法
              add()               向集合中加入一個(gè)對(duì)象的引用
              clear()             刪除集合中所有的對(duì)象,即集合不再持有這些對(duì)象的引用
              contains()       判斷集合中是否持有特定對(duì)象的引用
              isEmpty()        判斷集合是否為空
              iterator()        返回一個(gè)Iterator類型的對(duì)象,,通過(guò)這個(gè)對(duì)象可以遍歷集合中所有的元素
              remove()         從集合中刪除一個(gè)對(duì)象的引用
              size()               返回集合中元素的數(shù)目
              toArray()          返回一個(gè)數(shù)組,,包含集合中的所有元素
            List 和 Set接口均繼承Collection接口,這些類型的對(duì)象可以使用上述方法,,但是不能對(duì)Map對(duì)象調(diào)用以上的方法,。
   
  (5)Iterator接口
          a. Iterator接口隱藏底層集合的數(shù)據(jù)結(jié)構(gòu),提供遍歷各種類型的集合的統(tǒng)一接口
          b. Iterator接口中聲明了如下方法:
              hasNext()
              next()
              remove()
---------------------------------------------------------------------------------------------------------------------------------------------------
   1.Set
       (1)Set是最簡(jiǎn)單的一種集合,,不排序,,沒(méi)有重復(fù)對(duì)象
       (2)Set是一個(gè)接口,它有兩個(gè)實(shí)現(xiàn)類,,HashSet和TreeSet
               a.HashSet類按照哈希算法來(lái)存取集合中的對(duì)象,,存取速度比較快;
               b.HashSet有一個(gè)子類LinkedHashSet,,不僅實(shí)現(xiàn)哈希算法,,而且實(shí)現(xiàn)鏈表數(shù)據(jù)結(jié)構(gòu),提高插入和刪除元素的性能,;
               TreeSet類實(shí)現(xiàn)了SortedSet接口,,具有排序功能
       (3)集合中存放的對(duì)象的引用
       (4)集合中的add方法   向集合中添加對(duì)象的引用時(shí),首先判斷這個(gè)對(duì)象是否已經(jīng)存在于集合中了,,集合的add方法通過(guò)調(diào)用對(duì)象的equals方法判斷對(duì)象是否相同
        不管是HashSet還是TreeSet,,實(shí)現(xiàn)的Set接口,它們的共性在于集合中沒(méi)有重復(fù)的元素,,集合不排序
《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》
   1.1 HashSet
        (1)按照哈希算法存取集合中的對(duì)象,,具有很好的存取和查找性能
        (2)當(dāng)向集合中加入一個(gè)對(duì)象時(shí),Hashset會(huì)調(diào)用對(duì)象的hashCode()方法獲得哈希碼,,然后根據(jù)哈希碼進(jìn)一步計(jì)算對(duì)象在集合中的存放位置
        (3)在java.lang.Object中定義了hashCode()和equals()方法,,在最原始的Object中定義的equals()方法是按照內(nèi)存地址比較對(duì)象是否相等,因此對(duì)于Object而言,,如果equals方法的結(jié)果為true,,則說(shuō)明兩個(gè)引用實(shí)際上引用相同的對(duì)象,這兩個(gè)引用的哈希碼必然也相同
        為保證HashSet能夠正常工作,,要求兩個(gè)對(duì)象用equals()方法比較的結(jié)果為true時(shí),,他們的哈希碼也相同
        如果用戶定義的類覆蓋了Object的equals方法而沒(méi)有覆蓋hashCode方法,會(huì)導(dǎo)致當(dāng)equals方法結(jié)果為true時(shí),,對(duì)象的哈希碼并不相同,,這樣會(huì)使hashSet無(wú)法正常工作,用戶本意是作為同一個(gè)對(duì)象引用處理,,但是由于沒(méi)有覆蓋hashCode()方法,,導(dǎo)致哈希碼不同,hashSet將作為不同對(duì)象處理,。
   1.2 TreeSet
         (1)TreeSet實(shí)現(xiàn)了SortedSet接口,,能夠?qū)现械膶?duì)象進(jìn)行排序,當(dāng)TreeSet向集合中加入一個(gè)對(duì)象時(shí),,會(huì)把它插入到有序的對(duì)象序列中,,TreeSet支持兩種排序方式:自然排序和客戶化排序
           當(dāng)TreeSet向集合中插入一個(gè)對(duì)象時(shí),會(huì)自動(dòng)進(jìn)行排序:如何呢?調(diào)用對(duì)象的compartTo方法比較對(duì)象的大小,,然后進(jìn)行升序排序,,所以對(duì)象必須實(shí)現(xiàn)Comparable接口,
         1.2.1 自然排序   
            a.java類庫(kù)中有一部分類實(shí)現(xiàn)了Comparable接口,,如Integer,,Double和String,Comparable接口有一個(gè)compareTo(Object o)方法,返回整數(shù)類型,;
            b.TreeSet調(diào)用對(duì)象的compareTo()方法比較集合中對(duì)象的大小,,然后進(jìn)行升序排列,這種排序方式成為自然排序
            c.使用自然排序時(shí),,必須向TreesSet集合中加入同類型的對(duì)象,,并且這些對(duì)象的類必須實(shí)現(xiàn)了Comparable接口
            d.對(duì)于TreeSet中已經(jīng)存在的對(duì)象,如果修改了他們的屬性,,TreeSet不會(huì)對(duì)集合進(jìn)行重新排序
         1.2.2 客戶化排序
            a.java.util.Comparator<Type>接口提供集體的排序方式,,<Type>指定能夠被比較的對(duì)象的類型,用這種方式,,首先定義一個(gè)類實(shí)現(xiàn)java.util.Comparator<Type>接口,,然后在類的定義中實(shí)現(xiàn)Compare方法,在創(chuàng)建TreeSet對(duì)象時(shí),,將java.util.Comparator<Type>類型的對(duì)象作為參數(shù)傳入TreeSet的構(gòu)造器中,。這樣TreeSet在向集合中插入對(duì)象時(shí),會(huì)自動(dòng)調(diào)用compareTo方法
==================================================================================
  2.List
     List的主要特征是其元素以現(xiàn)行方式存儲(chǔ),,集合中允許存放重復(fù)對(duì)象
     2.1 List的實(shí)現(xiàn)類包括
            ArrayList  
             a. 代表長(zhǎng)度可變的數(shù)組,;
             b. 既然是數(shù)組,允許對(duì)元素進(jìn)行快速的隨機(jī)訪問(wèn),;
             c. 向ArrayList中插入和刪除元素的速度較慢
            LinkedList  
             a.在實(shí)現(xiàn)中采用鏈表數(shù)據(jù)結(jié)構(gòu)
             b.向List中插入和刪除元素的速度較快
             c.隨機(jī)訪問(wèn)的速度相對(duì)較慢,,隨機(jī)訪問(wèn)的含義是根據(jù)索引定位特定位置的元素
             d.提供addFirst(0 addLast() getFirst() get拉斯特() removeFirst()和removeLast()方法,使LinkedList可以作為堆棧,,隊(duì)列和雙向隊(duì)列使用
     2.2 對(duì)List中元素的訪問(wèn)
            采用ArrayList實(shí)現(xiàn)可以直接通過(guò)索引訪問(wèn)指定位置的List元素
     2.3 列表排序
            List只提供按照索引位置進(jìn)行排序,,如果希望對(duì)List中的對(duì)象按其他特定方式進(jìn)行排序,,可以借助于Comparator接口和Collections類,Collections類是Java類庫(kù)的的輔助類,,提供操縱集合的各種靜態(tài)方法,,其中sort()方法用于對(duì)List中的對(duì)象進(jìn)行排序
            sort(List list) 對(duì)List進(jìn)行自然排序
            sort(List list,Comparator comparator)根據(jù)Comparator實(shí)現(xiàn)類的compare方法對(duì)List進(jìn)行客戶化排序
     2.4 ListIterator接口
           List的listIterator()方法返回一個(gè)ListIterator對(duì)象,ListIterator接口繼承Iterator,,hasNext() next()
           add() hasPrevious(0   previous()
    2.5獲得指定長(zhǎng)度的List對(duì)象
         java.util.Arrays工具類提供asList()方法,,將一個(gè)Java數(shù)組包裝成一個(gè)List對(duì)象
    2.6  Java數(shù)組    隨機(jī)訪問(wèn)速度快
           ArrayList   隨機(jī)訪問(wèn)快
           LinkedList  最快的插入和刪除
==================================================================================
  3.Map
     3.1 一種把鍵對(duì)象和值對(duì)象進(jìn)行映射的集合
     3.2map是一種集合,他的每一個(gè)元素都是一個(gè)映射,,包含一個(gè)鍵對(duì)象和一個(gè)值對(duì)象
     3.3
         a.向Map中插入元素時(shí),,必須提供一對(duì)鍵對(duì)象和值對(duì)象
         b.從map集合中檢索時(shí),只要給出鍵對(duì)象,,就會(huì)返回對(duì)應(yīng)的值對(duì)象
     3.4Map中的鍵值不能夠重復(fù),,但是值可以重復(fù)
     3.5 Map中的方法
           put()
           get()
           entrySet()  返回一個(gè)集合,存放Map.Entry類型的元素,,每個(gè)Map.Entry對(duì)象代表Map中的一對(duì)鍵和值
     3.6 Map的兩種實(shí)現(xiàn)
           a HashMap
               a.1 根據(jù)哈希碼存取元素,,存取速度比較快
               a.2 equals()和hashCode()方法要一致
           b.TreeMap
               使用TreeMap向集合中插入元素時(shí),會(huì)進(jìn)行排序,,支持自然排序和客戶化排序兩種方式
                               
==================================================================================
集合的工具類 Collections
          1.提供一系列用于操縱java集合的靜態(tài)方法,,它的一部分方法專門(mén)用于操縱List類型集合,還有一部分可用于操縱所有的Collection類型或Map類型集合
          2.List實(shí)際是長(zhǎng)度可變的數(shù)組(隨機(jī)訪問(wèn)非常方便)
          Collections中適用于List類型的方法
             copy(List dest,List src);
             fill(List list,Object o);
             sort(List list)對(duì)list進(jìn)行自然排序
             binarySearch(List list,Object)
          Collections中的以下方法適用于Collection類型或者M(jìn)ap類型集合
            Object max(Collection coll)
            Object max(Collection coll,Comparator comp)
            Object min(Collection coll)
            Object min(Collection coll,Comparator comp)
             返回不可改變的集合,,它只包含一個(gè)參數(shù)指定的對(duì)象,,集合中僅包含一個(gè)元素,且集合不可以改變,,因?yàn)榧喜豢梢员恍薷?,所以不用采用同步措施,提高并發(fā)性能
             Set singletonSet(Object o)
             List singletonList(Object o)
             Map singletonMap(Object key,Object value)
              在原來(lái)集合的基礎(chǔ)上,,返回線程安全的集合對(duì)象,,在多線程環(huán)境下,不允許一個(gè)線程對(duì)集合進(jìn)行排序,,另一個(gè)線程對(duì)集合進(jìn)行修改
              Collection synchronizedCollection(Collection c)
              List synchronizedList(List list)
              Map synchronizedMap(Map map)
              Set synchronizedSet(Set set)         
             在原來(lái)集合的基礎(chǔ)上,,返回不允許修改的集合視圖 ,集合的元素不允許被修改,,生成原始的集合視圖,,線程訪問(wèn)這個(gè)集合視圖,不需要采用同步措施,,因?yàn)橐晥D時(shí)不可以被修改的,,相當(dāng)于是不可變類,總是線程安全的,,程序可以讀取視圖的內(nèi)容,,但是不能夠修改它
             Collection unmodifiedCollection(Collection c)
              List unmodifiedList(List list)
              Map unmodifiedMap(Map map)
              Set unmodifiedSet(Set s)
          
    對(duì)于不可變類無(wú)需設(shè)置線程同步,,因?yàn)榫€程不會(huì)修改共享數(shù)據(jù),所以不會(huì)造成修改操作數(shù)的情況,。
 
本文來(lái)自CSDN博客,,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/JBuilder3/archive/2010/05/28/5630846.aspx

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多