一.Java集合类概述
1.集合类:为了保存数量不确定的数据,以及具有映射关系的数据(关联数组)。集合类主要负责保存和盛装其他数据,因此集合类又叫做容器类。
2.集合类与数组的区别:
① 集合类中的数据数量不确定,而数组中数据的数量确定。
② 数组中的数据既可以是基本数据类型,又可以是对象。而集合类中只能保存对象。
3.Java集合框架的根接口:Collection和Map
Map保存的的每一项数据都是一个key-value对,其中key是不重复的。
二.Collection接口和Iterator接口
1.Collection接口
add,addAll,clear,contains,containAll,,remove,removeAll,size,isEmpty,toArray,iterator,re-tainAll等
2.Iterator接口
Iterator对象被称为迭代器,用于遍历集合中的元素。
三个方法:hasNext,next,remove
注意:
① 使用Iterator对集合元素进行迭代时,并不是把集合元素本身赋给迭代变量,而是把集合元素的值赋给迭代变量,所以修改迭代元素的值对于集合不会有任何影响。
② 使用Iterator对集合元素进行迭代时,集合元素不能被改变(Iterator的remove方法除外),否则会产生异常。
3.foreach循环
利用foreach循环也可以遍历集合中的元素。
与Iterator注意的两点相同。
三.Set接口
Set集合类似于一个罐子,其中的元素无序且不相等。Set集合判断两个元素是否相等是根据equal方法,而不是根据“==”来判断。
1.HashSet类
HashSet是根据哈希算法来存取集合中的元素。
HashSet集合判断两个元素相等的标准是:通过equals方法比较两个对象相等,并且hashCode方法的返回值也相等。
注意:
① 如果一个类重写equals方法,那么相应的也要重写hashCode方法。规则是:如果两个对象通过equals方法比较返回true,那么它们的hashCode方法的返回值也应该相同。
② 当向HashSet集合中添加可变对象时要格外注意,因为通过对可变对象的修改可能会导致HashSet集合中的两个元素完全相同,但是又处于不同的位置,从而导致HashSet集合无法准确的访问该对象。
LinkedHashSet类,是HashSet的子类,与HashSet类不同的是,它通过链表维持集合中元素的顺序,使得集合中的元素看起来时按照插入顺序保存的。
2.TreeSet类
继承了SortedSet接口,确保集合中的元素处于排序状态。
与HashSet类相比增加了如下几个方法:
first,last,lower,higher,subset,headSet,tailSet,comparator
TreeSet并不是按照元素的插入顺序进行排序,TreeSet支持两种排序算法:自然排序和定制排序。
大海,别为森林的渺小而沮丧,