<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——?dú)g迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請(qǐng)與我聯(lián)系。

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
    在5.0中,collection最大的一個(gè)改變就是可以指定它的具體類型:
    List<String> list=new List<String>;

    兩個(gè)最基本的接口:
    public interface Collection<E>
    {
    boolean add(E element);
    Iterator<E> iterator();
    . . .
    }

    public interface Iterator<E>
    {
    E next();
    boolean hasNext();
    void remove();
    }

    在5.0以前,常用的形式就是:
    Collection<String> c = . . .;
    Iterator<String> iter = c.iterator();
    while (iter.hasNext())
    {
    String element = iter.next();
    do something with element
    }
    但是在5.0中加入另外一種循環(huán)方式,類似于for each:
    for (String element : c)
    {
    do something with element
    }
    這種方式對(duì)任何實(shí)現(xiàn)了Iterable接口的類都適用。

    在使用remove的時(shí)候特別要注意的一點(diǎn)是,在調(diào)用remove之前必須先調(diào)用一次next方法,因?yàn)閚ext就像是在移動(dòng)一個(gè)指針,remove刪掉的就是指針剛剛跳過去的東西。即使是你想連續(xù)刪掉兩個(gè)相鄰的東西,也必須在每次刪除之前調(diào)用next。

    對(duì)collection排序和查找
    Collections類的sort方法可以對(duì)任何實(shí)現(xiàn)了List接口的類進(jìn)行排序。在排序過程中,他默認(rèn)這些類實(shí)現(xiàn)了Comparable接口,如果想用其他方法排序,可以在調(diào)用sort方法的時(shí)候提供一個(gè)Comparator對(duì)象:
    Comparator<Item> itemComparator = new
    Comparator<Item>()
    {
    public int compare(Item a, Item b)
    {
    return a.partNumber - b.partNumber;
    }
    });
    反向排序:
    Collections.sort(items, itemComparator);
    Collections.sort(items, Collections.reverseOrder(itemComparator));

    查找一個(gè)對(duì)象:
    i = Collections.binarySearch(c, element);
    i = Collections.binarySearch(c, element, comparator);
    但是這些list必須是已經(jīng)排好序了。而且要注意的是這個(gè)算法需要隨機(jī)訪問collection,如果不支持隨機(jī)訪問那么這個(gè)算法的效率可能會(huì)很低。

    幾種常用Collection:
    ArrayList
    An indexed sequence that grows and shrinks dynamically
    可以隨機(jī)訪問,但是如果要從中間刪除一個(gè)對(duì)象會(huì)影響效率,因?yàn)橛行┪磩h除的對(duì)象要相應(yīng)的調(diào)整位置。非線程安全,但效率會(huì)比Vector要高,如果在單線程下,選它而不是Vector。

    LinkedList
    An ordered sequence that allows efficient insertions and removal at any location
    只能按順序訪問,添加刪除很方便。雖然提供了get(n)方法,但實(shí)際上還是順序訪問的,如果發(fā)現(xiàn)在LinkedList里面使用了這個(gè)方法,要考慮這個(gè)List類型是否選的合適

    HashSet
    An unordered collection that rejects duplicates
    以hashcode為索引,適用于不知道所存對(duì)象位置而想尋找某個(gè)對(duì)象的情況。不可重復(fù)

    TreeSet
    A sorted set
    與HashSet類似,但是所存對(duì)象是排了序的

    LinkedHashSet
    A set that remembers the order in which elements were inserted


    PriorityQueue
    A collection that allows efficient removal of the smallest element
    加入Queue的時(shí)候會(huì)給與一個(gè)優(yōu)先級(jí),從queue中取出的時(shí)候先取出優(yōu)先級(jí)最低的

    HashMap
    A data structure that stores key/value associations
    存儲(chǔ)key/value對(duì),非線程安全,與HashTable相比效率要高些

    treeMap
    A map in which the keys are sorted
    排序的HashMap

    LinkedHashMap
    A map that remembers the order in which entries were added

    posted on 2007-06-25 10:41 rogerfan 閱讀(236) 評(píng)論(0)  編輯  收藏 所屬分類: 【Java知識(shí)】
    主站蜘蛛池模板: 久久亚洲国产精品成人AV秋霞| 一个人免费视频在线观看www | 亚洲狠狠婷婷综合久久蜜芽| 国产AV无码专区亚洲AV手机麻豆| 成人免费一区二区三区在线观看| 久久青草精品38国产免费| 老外毛片免费视频播放| 一本色道久久88—综合亚洲精品 | 国产精品久久亚洲不卡动漫| 亚洲va久久久噜噜噜久久天堂 | 国产亚洲精品国产福利在线观看| 亚洲精品综合久久中文字幕| 亚洲动漫精品无码av天堂| 亚洲精品线路一在线观看| 免费看香港一级毛片| 成人无码区免费A片视频WWW| 日韩在线永久免费播放| 四虎影视无码永久免费| 丁香花在线观看免费观看图片| 美女扒开屁股让男人桶爽免费| 亚洲高清毛片一区二区| 亚洲性无码AV中文字幕| 精品亚洲成A人无码成A在线观看| 亚洲视频一区在线| 亚洲美女在线观看播放| 精品日韩亚洲AV无码| 亚洲成a人片在线观看中文动漫| 亚洲精品无码专区在线在线播放| 亚洲国产成人久久综合碰| 全黄a免费一级毛片人人爱| 国产免费直播在线观看视频| 国产美女做a免费视频软件| 男女交性永久免费视频播放| 热99re久久免费视精品频软件| 免费网站看v片在线香蕉| 国产成人精品123区免费视频| 成年女人毛片免费播放人| 无码一区二区三区AV免费| 免费高清在线爱做视频| 免费国产成人午夜私人影视 | 亚洲一区二区三区写真|