当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JDK5.0中collection都有哪些变化

Javascript
JQuery 获取和设置Select选项的代码
jQuery ctrl+Enter shift+Enter实现代码
jQuery学习2 选择器的使用说明
jQuery学习3:操作元素属性和特性
jQuery学习4 浏览器的事件模型
jQuery学习5 jQuery事件模型
jQuery 学习6 操纵元素显示效果的函数
jQuery学习7 操作JavaScript对象和集合的函数
jQuery库与其他JS库冲突的解决办法
JavaScript Event事件学习第一章 Event介绍
JavaScript Event学习第二章 Event浏览器兼容性
JavaScript Event学习第三章 早期的事件处理程序
JavaScript Event学习第四章 传统的事件注册模型
JavaScript Event学习第五章 高级事件注册模型
JavaScript Event学习第六章 事件的访问
JavaScript Event学习第七章 事件属性
JavaScript Event学习第八章 事件的顺序
js png图片(有含有透明)在IE6中为什么不透明了
JavaScript 读取元素的CSS信息的代码
基于mootools的圆角边框扩展代码

Javascript 中的 JDK5.0中collection都有哪些变化


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 120 ::
收藏到网摘: n/a

在5.0中,collection最大的一个改变就是可以指定它的具体类型:

List list=new List;

 

两个最基本的接口:

public interface Collection

{

boolean add(E element);

Iterator iterator();

. . .

}

 

public interface Iterator

{

E next();

boolean hasNext();

void remove();

}

 

在5.0以前,常用的形式就是:

Collection c = . . .;

Iterator 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 itemComparator = new

Comparator()

{

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