Collection集合 、泛型(不定期修改)

一、集合框架 - 封装数据结构

要求:

  1.方法的使用

  2.原理的掌握

  3.数据结构的实现

1.概念

  集合是java提供的一种容器,主要负责存储“任意数量”的数据.

2.集合和数组的区别

  1)相同点:都是容器,可以存储多个数据

  2)不同点:

          a.数组的长度是不可变的,集合的长度是可变的.

          b.数组存储的是同一类型的元素,集合存储的都是对象。

          c.数组可以存储基本数据类型和引用数据类型,集合能存储引用数据类型,如果要存储基本数据类型,则需要存储对应的“包装类”.

3.集合体系

  Collection(I) - 单列集合

          |- List(I)

                  |-        ArrayList(C) - 数组

                  |-        LinkedList(C) - 双向链表

                  |-        Vector(C) - 数组

          |- Set(I)

                  |-        HashSet(C) - 散列表(哈希表)

                  |-        SortedSet(I)

                          |- TreeSet(C) - 二叉树

          |- Queue(I)

                  |-        Deque(I)

                          |-        LinkedList(C) - 双向链表

  Map(I) - 双列集合

          |-        HashMap(C) - 散列表

                  |-        LinkedHashMap(C) - 双向链表 + 散列表

          |-        HashTable(C) - 散列表

          |-        ConcurrentHashMap(C) - 散列表

          |-        SortedMap(I)

                  |-        TreeMap(C) - 二叉树

________________________________________________

4、Collection(I) - 单列集合

1)创建方式

  Collection con = new 实现类()

2)常用API

  普通常用方法:

add(E e):添加

          remove(Object):根据元素进行删除

          size():获取集合长度

          isEmpty():判断集合是否为空

          clear():清空集合

  跟集合相关方法:

          boolean addAll(Collection<? extends E> c)

          boolean containsAll(Collection<?> c)

          boolean removeAll(Collection<?> c)

          boolean retainAll(Collection<?> c)

  跟数组相关方法:

    集合转数组:

          Object[] toArray() 

          <T> T[] toArray(T[] a)

数组转集合:

Arrays.asList()

5.Iterable(I)

  1)有且只有一个iterator(),用于获取迭代器

  2)Iterable是Collection集合的父接口,给该集合中的元素提供可遍历的方式.

  3)Iterator(I) - 迭代器

          a.Iterator是一个接口,他的作用就是用于遍历迭代所有的元素.

          b.使用前提: 必须实现Iterable.

          c.常用API

                  ①.hasNext(): 询问有没有下一个元素

                  ②.next(): 移动游标到下一个位置

                  ③.remove(): 删除元素

  4)foreach - 增强for循环- 简易版迭代器

          a.JDK1.5之后出现的,其中原理就是实现了一个Iterator迭代器.

          b.只有实现Iterable接口的类才能使用迭代器和增强for循环,进行遍历集合.

          c.语法结构

                  for(集合/数组中元素的类型 变量名 : 要遍历的集合/数组 ){

                  }

          d.作用:专门用于遍历/迭代集合或数组

            缺点:只能用于获取集合中的元素,不能删除元素.

泛型

1)概念

  泛型本质上是提供类型的“类型参数”,也可以称之为参数化类型

  我们可以给类、接口、变量、方法只当类型参数,可以通过参数限制操作的数据类型,从而保证类型转换的绝对安全。

2)泛型的作用:

   强制了集合存储的固定的数据类型,提高了程序的安全性,避免了ClassCastException。

3)泛型的使用

 (1)自定义泛型类

  a.泛型类一般用于类中属性不太确定的情况下。

 (2)泛型方法

  a.是否拥有泛型方法,与其所在类是不是泛型类没有关系

  b.如果是static方法需要使用泛型,则需要在方法上标记泛型。

 (3)泛型接口

   a.实现类实现接口,不实现泛型,在new的时候进行指定类型。

  b.实现类实现接口的同时指定泛型,接口名<指定类型>

🌟通配符

通配符:当使⽤泛型类或者接⼝时,传递的数据中泛型类型不确定,可以通过通配符 表示。但是⼀旦使⽤泛 型的通配符后,只能使⽤Object类中的共性⽅法,集合中元素⾃身⽅法⽆法使⽤。

基本使用:

(1)泛型的上限与下限

上限:只能接收该类型及其⼦类                              格式:类型名称<? extends 类> 对象名称

下限:只能接收该类型及其⽗类                              格式:类型名称<? super 类> 对象名称

常考点: 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值