Java 集合与泛型

集合与泛型详解
本文深入探讨了集合的特性和功能,包括增加、删除、修改、查询等操作,以及集合的有序性、唯一性、线程安全性等特性。同时,详细讲解了泛型的概念、格式和好处,以及泛型类、泛型接口和泛型方法的使用。

集合

集合的特点:

1.集合能够对数据进行增加删除修改查询的操作

2.集合能够存储引用类型,如果是基本类型可以是包装类类

3.集合的长度是可变

--------------------数据结构------------------------

4.部分集合是有序的,部分集合是无序的 (这里的有序指的是存储有序,并不是排序)

5.部分集合是唯一的,部分集合是可重复 (11, 22 ,33, 33, 22)

6.部分集合是可排序的,部分集合是不可排序的 33 44 55 11 -> 11 33 44 55

7.部分集合是线程安全的,部分集合是线程不安全 (synchronized)

集合应该设计成一个类,还是一个框架?

集合框架应该设计成一个接口,不同的集合的实现不一样,那么效率不一样,

特点不一样,我们可以自由选取

数据结构: 数据的存储方式。

常见的和集合相关的数据结构: 数组,栈,队列,链表,哈希表,二叉树

存储方式不一样决定了该集合的性能效率不一样

集合如果方便应该有以下功能:

1.增加功能

    boolean add(E e)

    boolean addAll(Collection<? extends E> c)

2.删除功能

    void clear()

    boolean remove(Object o)

    boolean removeAll(Collection<?> c)

3.修改功能

4.查询功能
Iterator iterator()
Object[] toArray()

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

5.获取功能

        int size()

6.判断功能

boolean contains(Object o)

boolean containsAll(Collection<?> c)

boolean isEmpty()

7.其他功能

boolean retainAll(Collection<?> c)

返回原集合是否发生改变

改变了返回true

没改变返回false

并发修改异常

java.util.ConcurrentModificationException

异常名称: 并发修改异常

产生原因: 表示在使用迭代器的同时,使用原集合修改了元素

解决办法:

1.只操作原集合

toArray
 普通for

2.只操作迭代器

    使用ListIterator

注意:

foreach遍历集合底层也是使用了迭代器不能够解决并发修改异常

集合的遍历功能

4.查询功能

Iterator<E> iterator()

Object[] toArray()

泛型

泛型的由来:

1.泛型模仿了数组: 在编译时期就确定类型,不存在对所有的子类判断的问题

2.泛型模仿了方法:泛型是一种类似于方法的参数化类型

概念

泛型是JDK1.5之后引入的新特性,是一种将元素的类型提前在编译时期确定,并且它是一种参数化类型的技术

格式

  1. <>里面可以是任意的字母,一般泛型类会使用E,泛型方法会使用T
  2. 这里只能够定义引用类型,不能够定义基本书类型
  3. <>里面既可以定义一个泛型,也可以定义多个泛型

泛型的好处

  1. 简化了代码
  2. 取消了黄色警告线
  3. 取消了强制类型转换,提高了程序的效率
  4. 提高了程序的安全性
  5. 提高了程序的扩展性和可维护性,满足了开闭元祖【对扩展开放,对修改关闭】

泛型类

泛型类: 把泛型定义在类上。

泛型接口

概念:把泛型定义在接口

泛型接口的使用方式有如下三种:

1.实现类确定泛型类型

2.实现类不确定泛型,在调用的时候确定泛型

3.匿名内部类确定泛型类型

泛型方法

概念: 把泛型定义在方法上,泛型方法又可以理解为局部泛型。

泛型方法的特点:

  1. 泛型方法独立于泛型类或者泛型接口

  2. 泛型方法在方法调用的时候确定类型

  3. 一个泛型接口或者泛型类中可以有多个泛型方法

  4. 一个泛型方法也可以定义多个泛型

注:泛型方法在写框架的时候应用非常广泛,所以我们有必要掌握它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值