Java中Collection集合、Iterator迭代器、泛型

二、Collection接口

1、Collection 集合创建格式

2、Collection 接口的基本方法

三、Iterator 迭代器

1、Iterator 迭代器的实现

2、Iterator 迭代器中常用的方法

四、集合迭代中的转型

五、泛型

1、泛型的定义

2、泛型类

3、泛型接口

4、泛型通配符

5、泛型限定


集合是Java中提供的一种容器,可以用来存储多个数据,可以对其中的数据进行操作

一、集合继承关系

============

由上图可以看到,Collection接口为集合中的顶层接口,Collection 接口下面分为两大部分,左边为 List 接口,右边为 Set 接口,在List 接口下面有两个分支,分别为 ArrayList 类和 LinkedList 类,在 Set 接口下面也有两个分支,分别为 HashSet 类和 LinkedHashSet 类

  • collection 接口常用的子接口有:List 接口、Set 接口

  • List 接口常用的子类有:ArrayList 类、LinkedList 类

  • Set 接口常用的子类有:HashSet 类、LinkedHashSet 类

二、Collection接口

==================

Collection 接口是所有集合的顶层接口,其所有功能子类都可以使用,Collection 表示一组对象,这些对象也称为 collection 的元素,其中List 接口允许存放重复的元素,并且元素都是有序的,而Set 接口不允许存放重复元素,并且元素是无序的

1、Collection 集合创建格式

  • 方法一:Collection<元素类型> 变量名 = new ArrayList<元素类型>();   ==>只能存储<>中指定的元素类型,比较常用的方式

  • 方法二:Collection 变量名 = new ArrayList();   ==>集合的元素默认为Object类型,可以存储任何类型的元素

2、Collection 接口的基本方法

  • boolean add(Object obj):添加一个元素

  • void clear():移除collection中所有元素(集合还在)

  • boolean contains(Object obj):判断对象是否存在集合中

  • boolean remove(Object obj):移除集合中指定的元素(删除第一个遇到的元素)

  • int size():返回集合中元素的个数

  • Object[] toArray():把集合中的元素转成数组中的元素(集合转成数组)

逻辑实例:

Collection C = new ArrayList<>(); //创建集合

C.add(“abc”); //添加元素

C.add(“bcd”);

C.add(“cef”);

System.out.println(C.contains(“d”)); //判断元素是否在集合中

System.out.println(C.size()); //返回集合的元素个数

C.remove(“abc”); //移除集合中的元素

Object[] O = C.toArray(); //将集合转换成数组

for(int i = 0;i < O.length;i++) //遍历打印数组

{

System.out.println(O[i]);

}

三、Iterator 迭代器

===============

在集合中,由于采取的存储数据方式不同,获取数据方式也会不同,为了能够使用同一种方式来获取数据,Java 中采用 Iterator 迭代器来获取数据,即遍历获取,称之为迭代

Collection 集合获取数据的通用方法:先判断集合中有没有元素,如果有,就把元素取出来并继续判断,如果还有就继续取出,一直把集合中的元素全部取出。即迭代。集合中把这种取元素的方式描述在 Iterator 接口中,

1、Iterator 迭代器的实现

  • 在ArrayList 中重写了方法 iterator(),返回了 Iterator 接口的实现类的对象

  • 使用ArrayList集合的对象 array,Iterator it =array.iterator(),运行结果就是 Iterator 接口的实现类的对象

  • it 是接口的实现类对象,调用方法 hasNext 和 next 集合元素迭代

2、Iterator 迭代器中常用的方法

  • boolean hasNext():判断集合中是否还有元素可以迭代

  • next():获取出可以迭代的下一个元素

  • void remove():从迭代器指向的集合中移除迭代器返回的最后一个元素

逻辑实例:

Collection C = new ArrayList<>(); //创建集合

C.add(“abc”); //添加元素

C.add(“bcd”);

C.add(“cef”);

//迭代器,对集合ArrayList中的元素进行取出

//调用集合的方法iterator()获取出Iterator接口的实现类的对象

Iterator it = C.iterator();

//迭代是反复内容,使用循环实现,循环的条件,集合中没元素, hasNext()返回了false

while(it.hasNext())

{

String s = it.next();

System.out.println(s);

}

四、集合迭代中的转型

==============

当使用第二种方法:Collection 变量名 = new ArrayList();  创建集合的时候,集合中就能存储任意类型的对象,存储时提升了 Object,这样一来,取出时要使用元素的特有内容,必须向下转型。所以说一般使用第一种方法创建集合,这种不常用。

逻辑实例:

Collection C = new ArrayList(); //创建集合

C.add(“abc”); //添加元素

C.add(“bcd”);

C.add(“cde”);

Iterator it = C.iterator(); //调用集合的方法iterator()获取出,Iterator接口的实现类的对象

while (it.hasNext())

{

//由于元素被存放进集合后全部被提升为Object类型

//当需要使用子类对象特有方法时,需要向下转型

String str = (String) it.next();

System.out.println(str.length());

}

注:如果集合中存放的是多个对象,这时进行向下转型会发生类型转换异常,这时,就要采用泛型来解决这个问题

五、泛型

========

在进行迭代的转型的时候,如果集合中存放的是多个对象,进行向下转型就会发生 ClassCastExpception 的异常,这时,必须明确集合中元素的类型。这种方式称之为:泛型(在JDK1.5之后出现的)

1、泛型的定义

  • 泛型表示:使用 < 元素类型 > 指明集合中存储数据的类型。如:Collection<元素类型> 变量名 = new ArrayList<元素类型>();

  • Java 中的伪泛型:泛型只在编译的时候存在,编译之后就擦除,在编译之前就可以限定其集合的类型

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

image

高效学习视频

、实战项目、讲解视频**

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-T9Bv3Y9V-1710403320100)]

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

[外链图片转存中…(img-gDW08Muj-1710403320101)]

高效学习视频

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值