文章参考了很多博文
java集合也就是容器
java集合可以储存很多数量不等的对象,也可以存储具有映射关系的关联数组。
一,
(1)对于对象的存储可以存在数组里面,或者集合
(2)数组存储对象的缺点是:
<1>数组存储时一旦创建数组,长度就不可改变。
<2>数组存储的对象的真实个数不可知道。
二,
(1)集合可分为Map和Collection两种体系
<1>Collection接口
方法:add(object obj) 添加对象
addAll(Collection coll) 添加集合中的对象
size()
clear()
remove(object obj) removeAll(Collection coll)
isEmpty()
retainAll(Collection coll)取两个集合的交集
contains(object obj)
containsAll(Collection coll)
toArray();
1-list接口,元素有序,可以重复,“动态”数组,
remove(int index) set(int index ,object obj)删除
get(int index)获取
add(int index, object obj)插入
Arrylist 查询效率高
Linkedlist(频繁的插入删除)
vector(线程安全)添加进list的对象要重写equals方法。
2-set
HashSet LinkedHashSet TreeSet
算法:
向Set中添加对象时,首先先调用此对象所在 类的Hashcode()方法,此哈希值决定此对象存放在那个位置,如果有对象存储在该位置,调用equals()比较这两个对像,如果返回值 为true则这个对象不能存储进去。
LinkedhashSet 使用链表维护了一个添加进集合的顺序,遍历的时候会按照添加顺序遍历
Treeset 这个集合的对象要同一类的
遍历的时候按照顺序排序:自然顺序和自定义的顺序
添加元素的话先要Compareto() 返回值为0则不能添加进去
Compareto(),hashcode() equals()
Map集合
元视图操作方法
Set keySet()
collection values()
entry entrySet()
HashMap 线程不安全,允许NULL的key和value
key的存放是用Set的,不能重复
values的存放是collection 可以重复
entry 也是Set存放的不能重复
向HashMap中添加元素时会调用Key的equals()方法判断两个key是否相同
hashtable 线程安全 不允许null
treeMap Key必须是同一类对象 对KEY排序
LINKEDhASHMAP 按添加顺序遍历
properties HashTable的子类 String类型的Key
values