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