java

java 集合类

2018-04-25  本文已影响1人  n油炸小朋友
java 集合类.png

* Iterable

迭代器接口,是Collection类的父接口。

实现这个Iterable接口的对象允许使用foreach进行遍历。

这个Iterable接口只有一个方法: iterator()。它返回一个代表当前集合对象的泛型<T>迭代器,用于遍历操作。

一、Collection:

最基本的集合接口,它不提供直接的实现。

实现了 Collection 接口的类都必须提供两套标准的构造函数,一个是无参,用于创建一个空的 Collection,一个是带有 Collection 参数的有参构造函数,用于创建一个新的 Collection,这个新的 Collection 与传入进来的 Collection 具备相同的元素。

1、 List:

有序可重复;

允许元素为null;

另外还提供一个 listIterator()方法,返回一个 ListIterator 接口,和标准的 Iterator 接口相比,ListIterator 多了一些 add()之类的方法,允许添加,删除,设定元素, 还能向前或向后遍历;

2、 Set:

不允许重复元素,实现原理是基于Map,Set利用Map中“键”不能重复的特性实现,java是先实现了Map,然后通过包装了一个所有value都为null的Map就实现了Set集合;

Set判断两个对象相同不是使用"=="运算符,而是根据equals方法。equals()决定是否可以加入HashSet、而hashCode()决定存放的位置,它们两者必须同时满足才能允许一个新元素加入HashSet。

如果两个对象的hashCode相同,但是它们的equlas返回值不同,HashSet会在这个位置用链式结构来保存多个对象。而HashSet访问集合元素时也是根据元素的HashCode值来快速定位的,这种链式结构会导致性能下降。

如果需要把某个类的对象保存到HashSet集合中,我们在重写这个类的equlas()方法和hashCode()方法时,应该尽量保证两个对象通过equals()方法比较返回true时,它们的hashCode()方法返回值也相等

3、Queue:

先进先出

二、Map:

以Key-Value键值对存在,key不允许重复;

Map中包括一个内部类:Entry。该类封装了一个key-value对,Entry包含三个方法:
Object getkey():返回该Entry里包含的key值。
Object getValue():返回该Entry里包含的value值。
Object setValue():设置该Entry里包含的value值,并返回新设置的value值。

Map一般很少输出,一般作为查询使用,如果要迭代,必须声明一个类型为Map.Entry的Set接口,接收map.entrySet(),然后用Set 的Iteractor遍历(或foreach遍历Set集合),getKey()得到key,getValue()得到value

Hashmap实现请看jdk8 hashmap


ArrayList与Vector的区别:

ArrayList是JDK1.2之后推出的,比Vector新。

ArrayList采用异步处理的方式,性能更高。Vector采用同步处理。

ArrayList非线程安全,vector线程安全。

ArrayList只能用Iterator、foreach输出,Vector除此之外还可以用Enumeration输出。

HashMap与HashTable的区别

HashTable是旧的操作类。

HashMap采用异步处理,性能更高。HashTable同步处理。

HashMap线程不安全,HashTable线程安全。

HashMap允许key设为null,Hashtable不允许。

Collection与collections的区别

Collection是一个接口;Collections是一个类,里面有很多静态方法,这个类不能实例化。

上一篇下一篇

猜你喜欢

热点阅读