【Java基础】04_集合框架

一、java中集合了类的关系图【简化版】

注:

虚线矩形表示接口

实线矩形表示具体实现类

实线矩形加粗表示具体实现类使用频率高,作为重点掌握

集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。

而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构。

二、集合与数组的异同(面试题)

1.相同点

他们都是容器,都可以储存数据。

2.区别

  长度区别

      数组固定:数组对象创建时,长度就固定

    集合可变:集合可以随着存储元素个数的变化,长度发生变化

  存储元素类型区别

      数组即可以储存基本数据类型,也可以储存引用数据类型。

    集合只能存储引用数据类型。

  是否存储同一类型区别

      数组存储元素类型必须一致。

    集合元素类型可以不一致。通过泛型可以限制集合的存储元素类型

三、单列集合继承体系

Collection(单列集合)

|—— List(元素存取有序,有索引,可以重复)

|   |—— ArrayList

|   |   底层是数组实现的,线程不安全,查找和修改快,增和删比较慢

|   |—— LinkedList

|   |   底层是链表实现的,线程不安全,增和删快,查找和修改比较慢

|   |—— Vector

|   |   底层是数组实现的,线程安全,无论增删改查都慢

|   |—— 使用场景

|           |—— 如果查找和修改多,用ArrayList

|           |—— 如果增和删多,用LinkedList

|           |—— 如果都多,用ArrayList

|

|—— Set(元素存取无序,无索引,不可以重复)

|—— HashSet

|       |    底层是哈希算法实现

|     |—— LinkedHashSet

|             底层是链表实现,保证元素存取顺序,但是也是可以保证元素唯一,和HashSet原理一样

|—— TreeSet

|   底层是二叉树算法实现

|—— 使用

    一般在开发的时候不需要对存储的元素排序,大多用HashSet,HashSet的效率比较高

四、双列集合继承体系

Map(双列集合)

|—— HashMap

|      | 底层是哈希算法,针对键有效

|      |—— LinkedHashMap

|             底层是链表,针对键有效

|—— TreeMap

|       底层是二叉树算法,针对键有效

  |—— 使用场景

   开发中用HashMap比较多有效

五、继承体系学习方法

学习顶层:因为顶层定义的是共性内容。举例:水杯

使用底层:因为底层才是具体实现。举例:正方形水杯。椭圆形水杯

集合的常见使用步骤(四步走)

A:创建集合对象

B:创建元素对象

C:添加元素对象到集合对象中

D:遍历集合对象中的元素对象

1、通过集合对象获取迭代器对象。

2、通过迭代器对象的hasNext()方法判断是否有元素。

3、通过迭代器对象的next()方法获取元素并移动到下一个元素。

      获取返回值为【Object对象】,需向下转型,使用子类对象的方法

六、java.util.Collection<E>接口.共性方法

1添加功能(掌握)

  1. boolean add(Object obj):

    向集合中添加一个元素。

   2.boolean addAll(Collection c):

    向集合中添加传入集合的所有元素。

2删除功能(掌握)

  1. void clear():

    清空集合中所有的元素。

  2. boolean remove(Object obj):

    删除集合中第一次出现的指定元素对象。

  3. boolean removeAll(Collection c):

    删除集合中指定的集合元素。相当于去交集。

    只要有【一个】元素被移除了,就返回true。

3判断功能(掌握)

  1. boolean isEmpty():

    判断集合是否为空。

  2. boolean contains(Object obj):

    判断集合是否包含指定的元素。

  3. boolean containsAll(Collection c):

    判断集合是否包含指定的集合中的【所有】元素。

    对比记忆:

    String的判断功能也有isEmpty()和contains()

4遍历功能(掌握)

  Iterator iterator():获取迭代器。Collection类集合的专用遍历方式。

Iterator接口中的方法

    1. boolean hasNext():

      判断是否还有下一元素,有就返回true

    2. Object next():

      返回值为Object获取元素,并移动指针到下一个位置。

      不要多次使用it.next()方法,因为每次使用都是访问下一个对象。

      可能报出:NoSuchElementException 没有这样的元素异常。

      当你已经获取到元素末尾了,你还要获取,已经没有元素了,所以报错。

    3. void remove():

      从迭代器指向的Collection中移除迭代到当前元素

      每次调用 next() 只能调用一次此方法。

5长度功能(掌握)

int size():

获得集合的元素个数。

对比记忆:

  数组:属性array.length

  String和StringBuffer:方法length();

6交集功能(了解)

boolean retainAll(Collection c):

判断集合中是否有相同的元素。取交集的意思。

原集合改变,返回true

当对象集合是参数集合的子集,那么会返回false,因为原集合对象未发生改。

思考:

boolean retainAll(Collection c):

两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?

//假设有两个集合A,B。

//A对B做交集,最终的结果保存在A中,B不变。

//返回值表示的是A是否发生过改变。

7转换功能(掌握)

Object[] toArray():

把集合变成数组。遍历集合的一种方式。

注意返回为Object数组,需要向下转型,举例:String s = (String) objs[x];

数组转成集合的方式:

java.util.Arrays;

public static <T> List<T> asList(T... a)返回一个受指定数组支持的固定长度大小的集合。

七、java.util.List<E>接口(特有方法与索引有关)

public interface List<E> extends Collection<E>

有序的 collection(也称为序列)。

此接口的用户可以对列表中每个元素的插入位置进行精确地控制。

用户可以根据元素的整数索引(在列表中的位置)访问元素,

并搜索列表中的元素。

与 set 不同,列表通常允许重复的元素。

1 List的特点

1. 有序(存储和取出的顺序一致)

2. 元素可以重复

3. 可以通过索引值操作对应位置的元素

2添加功能

  1. void add(int index,Object obj):

    在指定的索引位置增加插入指定的元素

    注意:

    Collection中的add方法返回值为boolean

    IndexOutOfBoundsException -如果索引超出范围 (index < 0 || index > size())

    ClassCastException - 如果指定元素的类不允许它添加到此列表

  2. boolean addAll(int index, Collection c)

    在指定的索引位增加一个集合的一堆元素

3删除功能

Object remove(int index):

删除指定索引位置的元素,返回被删除的元素

4修改功能

Object set(int index,Object obj):

将指定索引位置的元素替换为指定元素,返回原元素

5获取功能

  1. Object get(int index):

    获取指定索引位置的元素

    特殊用法:

    结合普通for循环和size()方法,可以遍历List集合或者其子类

  2. int indexOf(Object obj):

    获取指定元素第一次出现的索引位置

  3. int lastIndexOf(Object o)

    获取指定元素在集合中最后出现的索引

  4. ListIterator listIterator():

    获取列表迭代器

    可以遍历集合,在遍历的过程中,对集合元素做出修改和增删

6截取功能

List<E> subList(int fromIndex, int toIndex)

返回一个子集,从指定索引开始(包括),到指定索引结束(不包括)

7小结

List集合特有遍历方式

普通for循环+int size()方法+Object get(int index)方法+向下转型

可以遍历List集合及其子类,遍历过程中可以使用集合对象操作元素对象

总结

List接口的特有方法都与索引index有关

注意:方法的返回值为Object的居多

时间: 2024-08-03 02:57:49

【Java基础】04_集合框架的相关文章

JAVA基础之集合框架

集合框架(collections framework) 首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能).Java中的集合框架定义了一套规范,用来表示.操作集合,使具体操作与实现细节解耦. 其实说白了,可以把一个集合看成一个微型数据库,操作不外乎"增删改查"四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的时空复杂度弄清楚了,基本上就可以说掌握这个类了. 设计理念 主要理念用一句话概括就是:提供一套"小而美"的API.API需要对

JAVA基础接口集合框架

接口--------------------------------------------------------------------------------一.接口(是一种规范)1.接口名/接口文件与类类似,也是用.java文件编写2.关键字 interface 接口名命名规范与类名相同 习惯上可以使用I开头表示3. 接口额访问修饰符只能使用public和default修饰不能使用private和protected在接口中默认缺省为public4.接口中的所有属性只能为公开的静态的常量而

Java基础之集合框架(Collection接口和List接口)

首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素: 例如:做广播操的时候,可以将学生插入到某排某列,反之也可以叫某排某列中的学生出列. 4.有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型. 例如:在吃饭的时候,众多铝饭盒中如何区别是自己的呢?在饭盒上刻独有的标志或贴纸条,这个标志和

java基础之集合框架总结篇

(一).java集合框架轮廓(图片来自网络):下面两张图能说整个集合框架的层次和结构! (ps)这里的很多总结是我把某培训机构视频全部看了,发现老师总结的很好就把它贴在这里了,权当自己在写代码时不记得给自己一个提醒作用. (二).Collection集合总结 Collection                 |--List 有序,可重复                       |--ArrayList                              底层数据结构是数组,查询快,

黑马程序员——【Java基础】——集合框架

一.集合框架概述 (一)集合框架中集合类关系简化图 (二)为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是用于存储对象的. (三)数组和集合类同是容器,有何不同? .数组长度是固定的:集合长度是可变的. 2.数组中可以存储基本数据类型,集合只能存储对象. (四)集合类的特点 集合可以存储不同类型的对象.集合只用于存储对象,集合长度是可变的. (五)为什么会出现这么多容器? 因为每一个容器对数据的存储方式都有不同,这个存储方式称

Java基础之集合框架详解(一)

集合框架的相关定义 集合:即存储对象的容器. 框架:即类库的集合. 集合框架:即用来表示和操作集合的统一框架,由相关的接口.实现类和一些帮助程序员完成编程的算法. 集合的作用: 在类的内部,对数据进行组织 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 集合与数组的区别: 集合长度是可变的,数组长度是固定不变的 集合中

Java基础之集合框架详解(三)Set篇

相关定义 作为Collection接口的重要子接口,Set接口是一个不包含重复元素,且元素排列无序的集合,也被称为集. 注意:不包含重复元素的含义,更确切的讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素. Set接口的方法和Collection接口的方法大体相同,也就是说Set接口不像List接口那样可以通过索引或去元素,只能通过Iterator()方法获取迭代器进行迭代. Set中的add方法不同于Collection接口,有一个

Java中的集合框架(上)

Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的条目: 3.有的集合接口,提供了一系列排列有序的元素,并且 可以在序列中间快速的插入或删除有关的元素. 4.有的集合接口,提供了映射关系,可以通过 关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型. 与数组的对比一为何选择集合而不是数组 1.数组的长度固定,集合长度可变 2.数

黑马程序员——黑马基础——Map,集合框架工具类Conlections和Arrays

黑马程序员--黑马基础--Map,集合框架工具类Conlections和Arrays ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一,Map集合 Map<K,V>集合是一个接口,和List集合及Set集合不同的是,它是双列集合,并且可以给对象加上名字,即键(Key). 特点: 1)该集合存储键值对,一对一对往里存 2)要保证键的唯一性. Map集合的子类 Map |--Hashtable:底层是哈希表数据结构,不可以存入null键nu

java中的集合框架

由于数组具有属性单一,长度不可改变的缺点,于是在程序中我们使用集合来代替它. 集合中不可放入基本数据类型,基本数据类型都是通过自动拆包和自动装箱功能才能放入和取出集合. 分类:Collection接口和Map接口 Collection:存放单一值元素,又可分为list接口类型和set接口类型 list接口类型:存放元素是有序的可重复的,可通过循环来取出其中的元素,实现类ArrayList() set接口类型:hash值排列,存放元素是无序不可重复的,通过指针取出其中元素,实现类HashSet()