·Java常用集合关系概览:
·集合框架的由来:
因为每个容器对象的自身的数据结构不同,所以对它们进行单独的描述和对象封装,并不断的向上抽取共性内容,这样就形成了集合框架。
·含义:
集合就是一个容器,用来存储对象、长度可变。
·理解:
其实火车就是一个容器,火车上面的每一位顾客都是单独封装了功能的对象,因为火车上面的乘客数量由于乘坐区间的不同每个时间段都在变化,所以长度是可变的。
·常用方法:
1、增加:
add()增加一个元素
addAll()增加多个元素
2、删除:
remove()删除一个元素,返回boolean类型,用equals方法进行判断,看是否有符合要求的元素,删除成功则会改变集合长度。
removeAll()删除全部。
clear()清空容器。
3、判断
contains()是否包含
isEmpty()集合是否为空
Size()集合长度
4、取
retainAll()取交集
·详细介绍每个集合类:
1、list:有序列表(存储顺序是一致的)该子系统元素中有索引或角标,可以存储重复的元素。
常用方法:
1)添加:List.add(1,"abc");//在角标1位置添加一个值为“abc”的元素。
2)删除:Object obj=list.remove(2);//删除角标为2处的元素。
3)查询:Object obj=list.get(1);获取指定 角标上的元素并返回。
4)修改:Object obj=list.set(1,"bcd");
下层结构:
1)ArrayList:底层是数组数据结构,不同步,查询快,增删慢。
2)LinkedList:底层是链表数据结构,不同步,查询快,增删慢。
3)Vector:底层是数组数据结构,同步,线程安全,效率低。
2、set:无序、不能存储重复的元素。
下层结构:
1)HashSet:底层是哈希表数据结构,无序,能保证元素的唯一性。(通过hashCode和equals两个方法来保证唯一性的)
·LinkHashSet:以元素的插入顺序来维护集合的连接表,允许以插入的顺序的集合中迭代。
2)TreeSet:用于给set集合中元素按照规定的顺序进行排序,低层是二叉树结构,线程是不同步的。(默认是自然排序方式)
3、Map:是结合框架中的顶层,存储键值对,键是唯一的。(如果存在键重复,新值覆盖旧值)
常用方法:
1)增加:put();putAll();
2)删除:clear();Remove(key);
3)判断:containKey();containValue();
4)获取:get(Objcet key);Size();Values();
下层结构:
1)HashMap:低层是哈希表数据结构,该集合是不同步的,允许使用null键和null值
·LinkHashMap:保证按照插入的顺序进行读取。
2)HashTable:该集合是同步,线程安全的,不允许出现null
3)TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序。
4、Iterator:个人理解,在这里它是提供对集合的遍历。
·Collections和Collection的区别:
1)Colleciton是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,为各种具体的集合提供了最大化的统一操作方式。
2)Collecitons是一个包装类,它包含各种有关集合操作的静态多态方法。它不可实例化,就像一个工具类。比如使用集合的ArrayList,完全可以使用Collections这个包装类将其转换成线程安全的。
·集合使用的细节问题:
1、直接存储基本类型的值也是可以的,因为jdk1.5之后有了自动装箱,会将基本数据类型转成对象。
2、集合对象中存储的其实是对象元素的引用。