所谓的类集指的是对象数组的应用;
传统的对象数组长度是固定的,所以数组一般不会使用;
后来使用了链表来实现动态的对象数组:
难于编写;
操作性能也麻烦:
链表使用了了Object类进行保存,所有的对象必须发生向上转型或向下转型;
在整个类集里有几个核心接口:
Collection,List,Set;
Map;
Iterator,Enumeration;
总结:
类集就是Java数据结构的实现,是动态对象数组;
Collection:
是类集之中单值保存的最大父接口;
既:每一次向集合里面保存一个对象;
为了开发要求的严格性,一般会使用它的两个子接口,List(允许重复),Set(不允许重复);
总结:
Collection接口现在几乎不直接使用了;
LIst:
List是Collection最为常用的子接口;
几个重要方法:
List的两个子类:ArrayList , Vector(一般不使用)
面试题:ArrayList 与 Vector 的区别
时间:Vector 1.0 推出, ArrayList 1.2推出
性能:ArrayList采用异步处理,非线程安全;
Vector采用同步处理,线程安全;
输出:ArrayList支持foreach,Iterator,ListIterator
Vector 支持foreach,Iterator,ListIterator,Enumeration
总结:
List的保存数据就是数据的添加数据;
List集合中可以保存重复元素;
List子接口比Collection扩充了一个get方法;
List使用子类就使用ArrayList接口;
Set接口并不像LIst接口那样对于Collection接口进行了大量的扩充,而是简单的继承;
Set集合下无重复元素;
Set接口下有两个常用的子类:HashSet,TreeSet;
HsahSet:保存的元素是无序的
TreeSet:保存的元素自动排序;
TreeSet类主要是依靠Comparable 接口的 compareto()方法 , 如果返回值等于0,
那么就认为是重复数据,不会被保存;
关于重复元素的说明:
很明显: Comparable接口只能够负责TreeSet子类进行重复元素的判断,它并不是真正的用于能够进 行重复元素验证的操作。如果要想判断重复元素,那么只能够提供依靠Object类中所提供的方法;
1:取得hash码pubic int hashCode;
先判断hash码是否相同,依靠哈希码取得对象的内容
2 : 对象比较:public boolean equals(Object obj)
再将对象的属性依次的比较;
只要在没排序的情况下,判断重复用hashCode()与equales()
总结:
开发之中,Set不是首选,真要使用也首先选择hashCode
Comparable大部分只存在理论范围内
Set必须保持前提,数据不重复
Map:
HsahMap:
无序;
如果出现了新的key会进行覆盖,使用新的内容替代旧的内容
HashTable:
HashTable ,key 与 value 不允许为空
面试题:HashMap与HashTable的区别
HashMap 允许key或value为空 1.2
HashTable 不允许 1.0
Map接口里没有定义任何返回Iterator 接口对象的方法;
每当用户用put()向Map集合里面保存一对数据的时候,实际上所有数据都被封装成Map.Entry接口对象
(内部接口)使用Static定义的内部接口就是外部接口
Map利用Intertor输出的方法:
利用Set集合中的Itertor()方法将Set中的集合进行Itertor进行输出
每一次循环取出的都是Map.Entry对象,利用此对象进行key与value的取出
总结:
Collection 存放数据的目的是为了输出,Map是为了查找
Map使用Iterator输出的步骤
HashTable ,key 与 value 不允许为空,HashMap可以;
如果出现了新的key会进行覆盖,使用新的内容替代旧的内容