A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© xuemingqiang 中级黑马   /  2016-6-9 10:02  /  362 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


JDK1.2 出现的集合框架中常用的子类对象
前缀名是结构名,后缀名是体系名。
ArrayList:数组结构,看到 Array 就知道查询速度快,看到 List 就知道可以又重复元素,
可以增删改查
LinkedList:链表结构,增删快
HashSet:哈希结构,查询速度更快,不保证有序,不可以重复,必须覆盖 hashCode 和
equals 方法
LinkedHashSet:链表加哈希结构,可以实现有序
TreSet: 二叉树结构, 可以排序。 有两种方法: 1.自然排序 compable, 2.比较器 comparator
Java 提供了只包含一个 compareTo()方法的 Comparable 接口。这个方法可以个给
两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存
在的对象。
黑马程序员入学面试复习
Java 提供了包含 compare()和 equals()两个方法的 Comparator 接口。compare()方法用
来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参
数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和 comparator 相等。
只有当输入参数也是一个 comparator 并且和当前 comparator 的排序结果是相同的时候,
这个方法才返回 true.
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据
以便增加和插入元素,允许直接按序号索引元素. 但是插入元素要涉及数组元素移动等内存
操作,所以索引数据快而插入数据慢,
Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,
Vector 属于遗留容器,现在已经不推荐使用,
LinkedList 使用双向链表实现存储(将内存中零散的内存单元通过附加的引用关联起
来,形成一个可以按序号索引的线性结构,这种链式存储方式与数组的连续存储方式相比,
其实对内存的利用率更高),按序号索引数据需要进行前向或后向遍历,但是插入数据时只
需要记录本项的前后项即可,所以插入速度较快。
由于 ArrayList 和 LinkedListed 都是非线程安全的,如果需要多个线程操作同一个容
器,可以通过工具类 Collections 中的 synchronizedList 方法将其转换成线程安全的容器
后再使用 (这其实是装潢模式最好的例子, 将已有对象传入另一个类的构造器中创建新的对
象来增加新功能)。
Map 集
Map(k,v) k:此映射所维护的键的类型 v:映射值的类型
Map 集合:双例集合,一次存一对,称为键值对。要保证键的唯一性。
Map 集合没有迭代器,必须先将 map 集合转成 set 集合,在使用迭代器,就可以取出结合
中的元素;或者使用 map 集合特有的 entrySet 方法,也可以取出 map 集合中虽有元素。
Map 集合常见子类:
1.HashTable:底层数据结构是哈希表结构,线程同步的,不允许 null 键,null 值;
2.HashMap:哈希表结构,不同步,允许 null 键,null 值;
3.TreeMap:二叉树结构,不同步,可以对 map 集合众多键进行排序。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马