集合概述:
(用于存储数量不等的多个任意类型的对象)
面向对象对事物的体现都是以对象的形式,使用数组存储对象具有一些弊端,而集合就像一种容器,可以动态地把多个对象的引用放入容器中,很好的解决数组中存在的弊端
数组弊端:
● 存储的数据类型需相兼容
● 先声明长度后使用
● 一旦定义了长度就不可修改(集合默认10个长度,创建一次增加一次)
------------------------------------------------------------------------------------------------------------------
集合分为:
● Collection接口 :是List、Set等的父接口,此接口没有实现类,而是提供更具体的子接口来实现(如:Set和List)
● Map接口 :
------------------------------------------------------------------------------------------------------------------
Collection接口方法: (声明对象:Collection coll = new ArrayList())
● size() :查询集合中元素的个数
● add(Object o) :向集合中添加元素(对象)
● addAll(Collection c) :向集合中添加集合,添加到当前集合元素(对象)的末尾
● contains(Object o) :传入的对象是否在集合中存在,存在返回true,否则false
● containsAll(Collection c) :传入的集合是否被当前集合包含,完全包含(集合中的元素)返回true,否则false
● isEmpty() :判断集合是否为空,为空返回true,否则false
● clear() :清除集合中的所有元素
● remove(Object o) :移除集合中指定的元素(首次出现的元素)
● removeAll(Collection c) :传入集合,移除当前集合中存在的所有元素
● toArray() :集合转换成数组
● Arrays.asList(Object[ ] o) :数组转换成集合
● equals() :判断两个集合是否相等(集合中相同下标位的元素是否相等)
● hashCode() :集合中每个元素通过计算哈希值累加的值
------------------------------------------------------------------------------------------------------------------
Iterator接口:(迭代器,主要用于遍历Collection集合中的元素)
注意:调用next()之前必须要调用hasNext()进行检测,若不调用且下一条记录无效,直接调用next()会抛出NoSuchElementException异常
------------------------------------------------------------------------------------------------------------------
foreach循环遍历:
------------------------------------------------------------------------------------------------------------------
List接口常用实现类:(List集合存储的对象是有序的,可重复的)
● ArrayList :List集合主要实现类,底层是由数组实现的,线程不安全(运行速度快)
● LinkedList :数据链存储,对于频繁的新增,删除集合中的元素效率很高
● Vector :很古老,大多数操作和ArrayList相同,线程安全的(运行速度慢)
------------------------------------------------------------------------------------------------------------------
List接口特有方法: (声明对象:List list = new ArrayList())
● add(int index,Object o) :在指定的下标位插入元素(下标:0—长度-1,之前此位置的元素依次后移)
● addAll(int index,Collection c) :在指定的下标位插入新的集合到当前集合
● get(int index) :得到当前集合中指定下标位的元素
● remove(int index) :移除指定下标位的元素
● set(int index,Object o) :修改指定下标位的元素为传入的元素
● indexOf(Object o) :查询指定元素在集合中第一次出现的下标位(未查询到 则返回-1)
● lastIndexOf(Object o) :指定的元素在当前集合中最后一次出现的下标位
● subList(int fromIndex, int toIndex) :从开始下标位截取到结束下标位,含开始下标位,不含结束下标位(左闭右开)
注意:当集合存放引用数据类型时,做比较需重写引用数据类型的equals()方法
------------------------------------------------------------------------------------------------------------------
Set接口常用实现类: ( 存储的对象是无序的,不可重复的。无序:存放是无序,不是指显示的顺序是无序 )
Set接口没有提供额外的方法。 判断两个对象是否相同不是使用==,而是根据equals方法
HashSet :( Set集合主要实现类,线程不安全 )
● 根据Hash值来指定当前对象存放的位置(每个对象计算出的Hash值不同,所以存储是无序)
● 判断两个元素相等的标准:两个对象通过hashCode()方法比较相等,并且equals()方法返回值也相等
● 对于存放在Set容器中的对象,对应的类一定要重写equals()和hashCode()方法,以实现对象相等规则
● 是HashSet的子类
● 使用链表方式进行存储
● 自然排序 :(默认,并按升序排列)
注意:存入元素为基本数据类型时,集合自动排序。当为引用数据类型时,则需要在引用数据类型中指定排序的方法(引用类型该对象的类中实现Comparable接口并重写compareTo()方法在其中指明排序方式)。compareTo()方法比较的是两个属性的大小,如果相同则认为是相同的对象,如果不相同,则进入hashCode()方法计算它的Hash值,Hash值不同再进入equals()方法比较
● 定制排序 :( 在外部声明Comparator的对象,并重写它的compareTo()方法 )
------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,还望告知
面向对象对事物的体现都是以对象的形式,使用数组存储对象具有一些弊端,而集合就像一种容器,可以动态地把多个对象的引用放入容器中,很好的解决数组中存在的弊端
数组弊端:
● 存储的数据类型需相兼容
● 先声明长度后使用
● 一旦定义了长度就不可修改(集合默认10个长度,创建一次增加一次)
------------------------------------------------------------------------------------------------------------------
集合分为:
● Collection接口 :是List、Set等的父接口,此接口没有实现类,而是提供更具体的子接口来实现(如:Set和List)
● Map接口 :
------------------------------------------------------------------------------------------------------------------
Collection接口方法: (声明对象:Collection coll = new ArrayList())
● size() :查询集合中元素的个数
● add(Object o) :向集合中添加元素(对象)
● addAll(Collection c) :向集合中添加集合,添加到当前集合元素(对象)的末尾
● contains(Object o) :传入的对象是否在集合中存在,存在返回true,否则false
● containsAll(Collection c) :传入的集合是否被当前集合包含,完全包含(集合中的元素)返回true,否则false
● isEmpty() :判断集合是否为空,为空返回true,否则false
● clear() :清除集合中的所有元素
● remove(Object o) :移除集合中指定的元素(首次出现的元素)
● removeAll(Collection c) :传入集合,移除当前集合中存在的所有元素
● toArray() :集合转换成数组
● Arrays.asList(Object[ ] o) :数组转换成集合
● equals() :判断两个集合是否相等(集合中相同下标位的元素是否相等)
● hashCode() :集合中每个元素通过计算哈希值累加的值
------------------------------------------------------------------------------------------------------------------
Iterator接口:(迭代器,主要用于遍历Collection集合中的元素)
注意:调用next()之前必须要调用hasNext()进行检测,若不调用且下一条记录无效,直接调用next()会抛出NoSuchElementException异常
------------------------------------------------------------------------------------------------------------------
foreach循环遍历:
------------------------------------------------------------------------------------------------------------------
List接口常用实现类:(List集合存储的对象是有序的,可重复的)
● ArrayList :List集合主要实现类,底层是由数组实现的,线程不安全(运行速度快)
● LinkedList :数据链存储,对于频繁的新增,删除集合中的元素效率很高
● Vector :很古老,大多数操作和ArrayList相同,线程安全的(运行速度慢)
------------------------------------------------------------------------------------------------------------------
List接口特有方法: (声明对象:List list = new ArrayList())
● add(int index,Object o) :在指定的下标位插入元素(下标:0—长度-1,之前此位置的元素依次后移)
● addAll(int index,Collection c) :在指定的下标位插入新的集合到当前集合
● get(int index) :得到当前集合中指定下标位的元素
● remove(int index) :移除指定下标位的元素
● set(int index,Object o) :修改指定下标位的元素为传入的元素
● indexOf(Object o) :查询指定元素在集合中第一次出现的下标位(未查询到 则返回-1)
● lastIndexOf(Object o) :指定的元素在当前集合中最后一次出现的下标位
● subList(int fromIndex, int toIndex) :从开始下标位截取到结束下标位,含开始下标位,不含结束下标位(左闭右开)
注意:当集合存放引用数据类型时,做比较需重写引用数据类型的equals()方法
------------------------------------------------------------------------------------------------------------------
Set接口常用实现类: ( 存储的对象是无序的,不可重复的。无序:存放是无序,不是指显示的顺序是无序 )
Set接口没有提供额外的方法。 判断两个对象是否相同不是使用==,而是根据equals方法
HashSet :( Set集合主要实现类,线程不安全 )
● 根据Hash值来指定当前对象存放的位置(每个对象计算出的Hash值不同,所以存储是无序)
● 判断两个元素相等的标准:两个对象通过hashCode()方法比较相等,并且equals()方法返回值也相等
● 对于存放在Set容器中的对象,对应的类一定要重写equals()和hashCode()方法,以实现对象相等规则
注意:重写hashCode()方法的基本原则:在程序中,同一个对象多次调用hashCode()方法应该返回相同的值。当两个对象的equals()方法比较返回true时,这两个对象的hashCode()方法返回值也应相等
------------------------------------------------------------------------------------------------------------------
● 是HashSet的子类
● 使用链表方式进行存储
● 插入性能略低于HashSet,但在迭代访问Set里的全部元素时有很好的性能
------------------------------------------------------------------------------------------------------------------
● 自然排序 :(默认,并按升序排列)
注意:存入元素为基本数据类型时,集合自动排序。当为引用数据类型时,则需要在引用数据类型中指定排序的方法(引用类型该对象的类中实现Comparable接口并重写compareTo()方法在其中指明排序方式)。compareTo()方法比较的是两个属性的大小,如果相同则认为是相同的对象,如果不相同,则进入hashCode()方法计算它的Hash值,Hash值不同再进入equals()方法比较
● 定制排序 :( 在外部声明Comparator的对象,并重写它的compareTo()方法 )
------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,还望告知