首页 > 代码库 > 集合

集合

集合“

分为 Collection(接口):存放单一元素,里面就是他的值。

  Map(接口) 存放键值对,一个键对应他的值。

Collection下面又有两个接口

List:元素有顺序的排列,就是说放进去什么顺序就是什么顺序,

里面的元素也是可以重复的

Set:元素没有顺序,不是实际上的没有顺序,只是他不是按你放进去的顺序,而是根据HashCode值排列的

不能重复,表示的是键名不能重复。

List接口下有3个常用实现类,他们分别是ArrayList(用的最多),voctor,linkedList

victor是1.0版本的ArrayList是1.2的

相比较而言 victor线程安全但是效率慢

反之ArrayList线程不安全,效率高

linkedList是链表式结构,ArrayList数组式结构

linkedList中的元素每一个元素都有他前一个和后一个元素的内存地址,通过内存地址的连接来访问!

对于效率而言,如果是前面和中间的元素的话linkedList肯定比ArrayList效率高,因为数组的后面的元素的下表都要改变

对于后面的元素修改的话ArrayList的效率高

但是我们一般增加元素都是从后面加,

对于查询的话毋庸置疑肯定是数组快,

所以一般用ArrayList;

Set:

HashSet和TreeSet

前者不能自定义排序,效率高

后者可以自定义排序,但是效率低些!

Map:

HashMap

TreeMap

HashTable

前两者和set中的类型区别是一样的

就HashTable而言,版本是1。0的线程安全,不能放空间和空值,

HashMap和TreeMap是1.2的 线程不安全,能放空键空值。

对于List和Set他们都有add()方法,但是Map没有,他只有put()方法

list可以通过循环遍历。set只能通过迭代器来遍历。

迭代器:Iterator

首先new一个Iterator对象a,

循环

如果a.hasNext();继续循环,没有推出循环

下个元素就为a.next();

完成循环遍历!