自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JDK5.0中一些collection類(lèi)的使用詳解

開(kāi)發(fā) 后端
JDK5.0中collection類(lèi)的使用對(duì)于編程人員來(lái)說(shuō)并不陌生,那么對(duì)于初學(xué)者掌握J(rèn)DK5.0中一些collection類(lèi)的使用是十分有用的,本文就向你介紹相關(guān)信息。

在JDK5.0中,collection最大的一個(gè)改變就是可以指定它的具體類(lèi)型,具體有哪些呢,讓我們來(lái)看看:

List list=new List;

JDK5.0中collection兩個(gè)最基本的接口:

  1. public interface Collection  {     
  2. boolean add(E element);    
  3.  Iterator iterator();    
  4.  . . .     
  5. }     
  6. public interface Iterator   {     
  7.   E next();    
  8.  boolean hasNext();    
  9.  void remove();   } 

在JDK5.0以前,常用的形式就是:

  1. Collection c = . . .;    
  2.  Iterator iter = c.iterator();     
  3. while (iter.hasNext())   {     
  4. String element = iter.next();    
  5.  do something with element    
  6.  }  
  7.  
  8. 但是在5.0中加入另外一種循環(huán)方式,類(lèi)似于for each:  
  9.  
  10. for (String element : c)   {   
  11.  do something with element    
  12.  } 

這種方式對(duì)任何實(shí)現(xiàn)了Iterable接口的類(lèi)都適用。

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

對(duì)collection排序和查找

JDK5.0中Collections類(lèi)的sort方法可以對(duì)任何實(shí)現(xiàn)了List接口的類(lèi)進(jìn)行排序。在排序過(guò)程中,他默認(rèn)這些類(lèi)實(shí)現(xiàn)了Comparable接口,如果想用其他方法排序,可以在調(diào)用sort方法的時(shí)候提供一個(gè)Comparator對(duì)象:

  1. Comparator itemComparator = new   Comparator()   {   
  2.   public int compare(Item a, Item b)   {    
  3.   return a.partNumber - b.partNumber;    
  4.    }    
  5.  }; 

反向排序:

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ī)訪問(wèn)collection,如果不支持隨機(jī)訪問(wèn)那么這個(gè)算法的效率可能會(huì)很低。

JDK5.0中幾種常用Collection:

ArrayList

An indexed sequence that grows and shrinks dynamically

可以隨機(jī)訪問(wèn),但是如果要從中間刪除一個(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

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

HashSet

An unordered collection that rejects duplicates

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

TreeSet

A sorted set

與HashSet類(lèi)似,但是所存對(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

那么JDK5.0中一些collection類(lèi)的常見(jiàn)使用就是這些了,是不是對(duì)你了解JDK5.0中的collection類(lèi)有幫助呢?
 

【編輯推薦】

  1. JDK的概念、組成及JDK常用包
  2. JDK1.4在Windows下的環(huán)境配置
  3. JDK1.6在LINUX下的安裝配置
  4. JDK日志框架之實(shí)例結(jié)合STAF淺析
  5. JDK日志分級(jí)作為核心API最佳實(shí)踐淺析
責(zé)任編輯:仲衡 來(lái)源: 百度空間
相關(guān)推薦

2009-07-08 17:33:46

JDK5.0內(nèi)置工具

2009-07-09 11:02:37

JDK5.0內(nèi)置工具

2009-07-07 16:22:13

JDK5.0源代碼

2011-07-19 18:11:09

iPhone 開(kāi)發(fā)

2018-09-11 16:15:36

Vue高版本前端

2011-06-16 14:28:08

Qt Symbian 文件

2011-06-24 14:46:23

Qt 類(lèi)

2017-05-23 14:33:46

簡(jiǎn)歷求職前端開(kāi)發(fā)

2012-12-24 14:51:02

iOS

2013-03-29 09:03:59

iOS實(shí)用小代碼iOS開(kāi)發(fā)

2022-05-24 12:50:58

Pandas索引代碼

2014-03-19 15:41:21

編程語(yǔ)言編程規(guī)則

2014-08-08 09:14:43

Linux瀏覽器

2023-11-13 07:54:54

.NET Core開(kāi)源框架

2011-03-16 10:40:42

JavaEEJ2EE

2009-09-10 09:15:38

監(jiān)視程序死鎖

2016-11-16 21:18:42

android日志

2010-03-25 13:59:52

Python API

2013-07-24 09:32:13

Android項(xiàng)目

2021-04-23 07:51:56

CSS Container Q Chrome
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)