JAVA基础:常用集合框架

来源:互联网 发布:后端 知乎 编辑:程序博客网 时间:2024/06/05 14:11

1.      框架:为了解决某一问题,而预先设计的一系列,具有继承和实现关系的类与接口,在使用中,我们只需要在这些类与接口中,选择相应的进行操作,就可以实现其功能

Collection直接衍生出Listset,间接衍生出Map

2.      List--列表。特点:线性--有序---外部放入的顺序即为列表存的顺序,所以有下标

最常用子类---ArrayListLinkedList

           ArrayList---底层实现就是使用的数组,它完成对数组的封装

           LinkedList--底层实现采用双向链表的结构

            ArrayListLinkedList的使用场景

            1、当需要大量做查询某个元素的时候,ArrayList效率高于LinkedList

            2、往尾部添加或删除元素,ArrayList效率高于LinkedList

            3、往中间添加或删除元素,LinkedList效率高于ArrayList

             面试时常常用ArrayListVector做辨析

            因为:Vector同样是List分支下面的集合类,底层使用的数据结构仍然是数组,提供的方法也是同样的API

            差异:1ArrayList是线程不安全的,效率高的

                  2Vector是线程安全的,效率低的

           使用场景:Vector在多线程情况下,且可能出现线程安全性问题时,才会用来替

 

3.      ArrayList

<类型>---泛型---表示该集合只能存放该类型及其子类的元素

使用集合对象:

A.     放入元素 add()

B.     得到元素个数size()

C.     可以根据位置获取某个元素getindex

D.     可以修改某个位置的元素setindexvalue

E.      删除某个位置的元素remove()

F.      List进行遍历

(1)      普通for循环

(2)      for-each循环---JDK1.5之后使用

(3)      集合框架类专用遍历方式---迭代器--Iterator--JDK1.5之前使用

4.      LinkList

基本同ArrayList

5.      Set--集。特点:不能存放重复元素,无序---外部放入的顺序不是内部存放的顺序,所以没有下标

最常用子类---HashSet

使用集合类对象

A.     放入元素 add()

B.     得到元素个数size()

C.     不可以根据位置获取某个元素(没有下标)

D.     不可以修改某个位置的元素(没有下标)

E.      不可以删除某个位置的元素(没有下标)

F.      可以根据传入的对象,删除Set集合中的重复对象remove(对象,不是下标)

G.     获取Set集合中的元素,只能使用遍历的方式

1for-each循环---JDK1.5之后使用

2)集合框架类专用遍历方式---迭代器--Iterator--JDK1.5之前使用

探究---HashSet是如何判断两个对象是重复对象的

                             1、两个对象的equals判断必须返回true

                   2、两个对象的Hash值必须相等

6. Map--映射。特点:用键值对的方式保存数据。---数据在Map集合中是成对存放的

---每个元素除了有值,还有一个唯一的键需要我们定义

最常用子类---HashMap

使用集合类对象

A. 放入元素 putKV

B. 得到元素个数size()

C. 可以根据键位置获取某个元素getK

D. 修改元素--仍然调用put方法,只需要放入相同的键

E.  删除某个位置的元素removek

在获取元素、删除元素的时候如果传入的键在map中不存在,不会报错!---危险

       在修改元素的时候,如果传入的键在map中不存在,就直接变成增加新元素!---危险

解决方案:

利用containsKey方法,可以判断一个map集合中是否包含某个键

也有containersValue方法,判断一个map集合中是否包含某个值

判断的标准和Set中判断重复对象的方式一样,equals方法和hashCode方法

F.  Map进行遍历

1Map不能直接遍历---因为Map里的每一条记录都是一对儿,我们无法用一个变量来装 

2Map只能单独遍历所有的键或所有的值

3、统一使用for-each循环进行遍历

Containskey():map中所有的键取出来放到一个Set集合中

Contansvalues():map中所有的值取出来放到一个Collection集合中

7. collections

常见的max()、min()取一个集合中的最大值和最小值

跟排序有关的方法--只能操作List集合

自然排序--Collections.sort()

反转--Collections.reverse()

混排(随机排放)--Collections.shuffle()--洗牌效果

0 0
原创粉丝点击