首页 > 代码库 > 集合的相关基础总结 对比学习

集合的相关基础总结 对比学习

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数据结构的操作。

 

集合的相关基础总结 对比学习