<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人片在线观看| 亚洲乱码精品久久久久..| 亚洲国产成人va在线观看网址| 久久国产精品2020免费m3u8| 国产精一品亚洲二区在线播放| 精品国产麻豆免费人成网站| 久久久久亚洲精品影视| 免费不卡在线观看AV| 亚洲成年人电影在线观看| 免费看成人AA片无码视频羞羞网| 亚洲成a人片在线看| 日本特黄特黄刺激大片免费| 日本亚洲高清乱码中文在线观看 | 国产在线观看免费av站| 国产日韩亚洲大尺度高清| 99热在线免费播放| 亚洲中文字幕日本无线码| 国产免费人人看大香伊| 久久精品免费网站网| 亚洲免费视频网站| 成年美女黄网站18禁免费| 婷婷亚洲综合五月天小说在线| 最新精品亚洲成a人在线观看| 久久久久久成人毛片免费看| 亚洲人成免费网站| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 成年男女男精品免费视频网站| 相泽南亚洲一区二区在线播放| 国产综合亚洲专区在线| xx视频在线永久免费观看| 亚洲a∨无码精品色午夜| 亚洲日韩aⅴ在线视频| 国内精品乱码卡1卡2卡3免费 | 亚洲综合图片小说区热久久| 毛片免费全部播放一级| 一级午夜a毛片免费视频| 91亚洲一区二区在线观看不卡| 日本特黄特色免费大片| 四虎国产精品永久免费网址| 青草久久精品亚洲综合专区| 亚洲av无码成h人动漫无遮挡|