天天看点

集合

集合“

分为 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();

完成循环遍历!