集合“
分为 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();
完成循环遍历!