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

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

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

    魚躍于淵

    First know how, Second know why !
    posts - 0, comments - 1, trackbacks - 0, articles - 49

    基于JDK5.0一些collection類的使用總結

    Posted on 2008-09-20 08:51 魚躍于淵 閱讀(98) 評論(0)  編輯  收藏 所屬分類: 精品網摘

     在5.0中,collection最大的一個改變就是可以指定它的具體類型:

      List< String> list=new List< String>;

      兩個最基本的接口:

      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中加入另外一種循環方式,類似于for each:

      for (String element : c)

      {

      do something with element

      }

      這種方式對任何實現了Iterable接口的類都適用。

      在使用remove的時候特別要注意的一點是,在調用remove之前必須先調用一次next方法,因為next就像是在移動一個指針,remove刪掉的就是指針剛剛跳過去的東西。即使是你想連續刪掉兩個相鄰的東西,也必須在每次刪除之前調用next。

      對collection排序和查找

      Collections類的sort方法可以對任何實現了List接口的類進行排序。在排序過程中,他默認這些類實現了Comparable接口,如果想用其他方法排序,可以在調用sort方法的時候提供一個Comparator對象:

      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));

      查找一個對象:

      i = Collections.binarySearch(c, element);

      i = Collections.binarySearch(c, element, comparator);

      但是這些list必須是已經排好序了。而且要注意的是這個算法需要隨機訪問collection,如果不支持隨機訪問那么這個算法的效率可能會很低。

      幾種常用Collection:

      ArrayList

      An indexed sequence that grows and shrinks dynamically

      可以隨機訪問,但是如果要從中間刪除一個對象會影響效率,因為有些未刪除的對象要相應的調整位置。非線程安全,但效率會比Vector要高,如果在單線程下,選它而不是Vector。

      LinkedList

      An ordered sequence that allows efficient insertions and removal at any location

      只能按順序訪問,添加刪除很方便。雖然提供了get(n)方法,但實際上還是順序訪問的,如果發現在LinkedList里面使用了這個方法,要考慮這個List類型是否選的合適

      HashSet

      An unordered collection that rejects duplicates

      以hashcode為索引,適用于不知道所存對象位置而想尋找某個對象的情況。不可重復

      TreeSet

      A sorted set

      與HashSet類似,但是所存對象是排了序的

      LinkedHashSet

      A set that remembers the order in which elements were inserted

      PriorityQueue

      A collection that allows efficient removal of the smallest element

      加入Queue的時候會給與一個優先級,從queue中取出的時候先取出優先級最低的

      HashMap

      A data structure that stores key/value associations

      存儲key/value對,非線程安全,與HashTable相比效率要高些

      treeMap

      A map in which the keys are sorted

      排序的HashMap

      LinkedHashMap

      A map that remembers the order in which entries were added
    主站蜘蛛池模板: 亚洲AV无码一区东京热久久| 国产成人亚洲影院在线观看| 亚洲五月激情综合图片区| 中文字幕在线视频免费观看| 午夜亚洲福利在线老司机| 国产成人亚洲精品91专区高清 | 日本卡1卡2卡三卡免费| 亚洲国产精品无码AAA片| 久久久99精品免费观看| 亚洲高清国产拍精品26U| 亚洲成人免费在线| 亚洲乱人伦精品图片| 四虎影视大全免费入口| 亚洲精品色在线网站| 亚洲精品国产V片在线观看 | 色播精品免费小视频| 亚洲精品亚洲人成在线播放| 精品剧情v国产在免费线观看| 亚洲av永久无码一区二区三区| 国产性生交xxxxx免费| 一级毛片在线完整免费观看| 亚洲色无码一区二区三区| 午夜精品射精入后重之免费观看| 亚洲国产模特在线播放| 永久免费看mv网站入口| 成人免费网站久久久| 亚洲AV无码精品色午夜果冻不卡| 久草免费在线观看视频| 亚洲成a人片在线观看天堂无码| 亚洲国产精品人人做人人爽| 免费观看一区二区三区| 亚洲国产成人精品电影| 国产午夜鲁丝片AV无码免费| 91视频免费网站| 亚洲午夜精品国产电影在线观看| 国产AV无码专区亚洲AV漫画| 久久狠狠躁免费观看| 亚洲一区二区三区高清不卡| 亚洲婷婷国产精品电影人久久| 久久青草免费91观看| 亚洲狠狠婷婷综合久久蜜芽|