二、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开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
高效学习视频
、实战项目、讲解视频**
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-T9Bv3Y9V-1710403320100)]
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
[外链图片转存中…(img-gDW08Muj-1710403320101)]