首页 > 代码库 > 集合的相关基础总结 对比学习
集合的相关基础总结 对比学习
String 不能改变字符长度 其实是指向另外一个字符串对象
StringBuffer 同步 用一个箱子把字符串装进去
StringBuilder 不同步 用一个箱子把字符串装进去 2个唯一区别是同步。
框架
Collection :集合中存储的都是对象的引用(地址)
List:元素是有序的,元素可以重复。因为该集合体系有索引。凡是可以操作角标的方法都是该体系特有的方法。
ArrayList:
底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
LinkedList:
底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
Vector:
底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
特点 Enumeration接口
枚举就是Vector特有的取出方式。
Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
TreeSet:二叉树结构。线程不同步。Set集合的功能和Collection是一致的。
有默认的排序功能 不能排序的元素进入第2个会Exception
保证元素唯一性 compareTo方法return 0.
2种排序方式。一是元素自己有比较性 一是集合初始化增加 比较器
HashSet:哈希表结构。线程不同步。 保证元素唯一性(hashCode和equals)
先看哈希值一样再比对象是否一样。
泛型:将运行时期出现问题ClassCastException,转移到了编译时期。
特殊之处:
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上
? 通配符。也可以理解为占位符。
泛型的限定;
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
Comparable: 接口 使对象具备可比性。
Comparator: 当对象自身不具备比较性,或者比较性不是所需要的时使用。新建个类实现接口。重写compare方法
Map:
|--Hashtable:哈希表结构,不可以存入null键null值。该集合是线程同步的。效率低。
|--HashMap:哈希表结构,允许使用 null 值和 null 键,该集合是不同步的。效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
map集合的两种取出方式:
1.获取Key。 通过keySet 得到Key的集合 通过Iterator取出每个Key后根据get方法获取对应Value.
2.获取Key和Value对应关系。通过entrySet 得到一对一关系Set集合 通过Itrator得到Map.Entry类型的对象。
在获取Key 或者Value
迭代器:集合的取出元素的方式。
Iterator
ListIterator:List特有的Iterator List是有序有索引的 所以加了特有方法。
Map.Entry<K,V> :接口, 子类对象基本就是Key和Value一对映射。 通过方法获取对应数据。
Iterator和ListIterator主要区别有:
一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。
二、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
三、ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator 没有此功能。
四、都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。
集合的相关基础总结 对比学习