WEB开发网
开发学院手机开发Android 开发 Java集合框架List,Map,Set等全面介绍 阅读

Java集合框架List,Map,Set等全面介绍

 2010-10-12 02:34:00 来源:本站整理   
核心提示:null元素,因为Set的这个制约,Java集合框架List,Map,Set等全面介绍(3),在使用Set集合的时候,应该注意:1,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,为Set集合里的元素的实现类实现一个有效的equals(Object)方法,2
null元素。

因为Set的这个制约,在使用Set集合的时候,应该注意:

1,为Set集合里的元素的实现类实现一个有效的equals(Object)方法。

2,对Set的构造函数,传入的Collection参数不能包含重复的元素。

请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。

Map接口

Map没有继承Collection接口。也就是说Map和Collection是2种不同的集合。Collection可以看作是(value)的集合,而Map可以看作是(key,value)的集合。

Map接口由Map的内容提供3种类型的集合视图,一组key集合,一组value集合,或者一组key-value映射关系的集合。

Hashtable类

Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。

添加数据使用put(key, value),取出数据使用get(key),这两个基本操作的时间开销为常数。

Hashtable 通过initial capacity和load factor两个参数调整性能。通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。

使用Hashtable的简单示例如下,将1,2,3放到Hashtable中,他们的key分别是”one”,”two”,”three”:

Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); numbers.put("two", new Integer(2)); numbers.put("three", new Integer(3));

要取出一个数,比如2,用相应的key:

Integer n = (Integer)numbers.get("two"); System.out.println("two =" + n);

由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方 法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相 同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如 果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希 表的操作。

上一页  1 2 3 4 5  下一页

Tags:Java 集合 框架

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接