集合,Collection接口,ArrayList以及迭代器的使用以及部分方法。

本文主要介绍了Java集合体系,包括Collection接口及其子接口List、Set,以及常用实现类ArrayList、LinkedList、HashSet等。还阐述了Collection接口的方法,如contains、toArray、remove等。重点讲解了迭代器的原理、方法和使用,包括while和for循环写法,同时提到了集合转型时的安全隐患。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合的体系:
目标:集合本身就是一个存储容器;
(存和取)
必须会使用集合存储对象;
遍历集合,取出对象;
集合自己的特性;

ArrayList:例如存储int类型数据;集合本身不接收基本类型,自动装箱的存储;

ArrayList父类是Collection,再父类是Iterable;
接口:Collection有很多子接口,常用接口是:List和Set
所有已知实现类中:ArrayList是常用类;

Collection的子类
List接口 Set接口

List接口下又有两个实现类:
ArrayList类和 LinkedList类

Set下也有两个常用实现类:
HashSet类和LinkedHashSet类

集合中的顶层接口就是Collection接口,翻译成中文就是《集合,序列》;
List翻译成中文就是列表
Set 集
ArrayList 数组列表
LinkedList 链表

Collection接口中的方法:
接口中的方法是不能用的,因为接口中的方法都是抽象的,所以要使用Collection接口的实现类:
ArrayList implements List
List extends Collection

Collection接口中的方法:
boolean contains(Object o)判断对象是否存在集合中,对象存在返回true
方法参数是Object类型
例如:boolean b = coll.contains(“rysj”) ;
sysout(b) ;
判断了集合中是否有rysj ;
判断的是某个对象是否在集合中;

但是
coll.add(“123”) ;
boolean b = coll.contains(123);
此时返回的是f;因为存储进去的是String类型,查询的是Integer类型,所以不能一起查询;

toArray() Collection接口中的又一个方法 ;集合中的元素转成一个数组中的元素,通俗讲就是集合转成数组;

Object[]toArray() ;
返回时一个存储对象的数组;

remove(Object o)方法:移除集合中指定元素;返回值类型布尔型,删除成功返回真

coll.remove(“rysj”);
返回真,如果写错或其他则返回假

如果有两个rysj的话,remove的时候删除靠前的,也就是第一个遇到的;

迭代器:iterator
负责给集合进行遍历;
迭代器的实现原理:
类似抓娃娃,不同的娃娃机,就像不同的集合,爪子就像iterator迭代器,负责取出

方法:
判断集合中还有没有可以被取出的元素hasNext 如果人有元素可迭代;返回true
next 返回迭代的下一个元素;

使用方法:
集合中的迭代器:
获取集合中元素的方式;
接口中的两个抽象方法如上:
Iterator接口 找实现类
Collection 接口定义方法
Iterator iterator()
ArrayList 重写方法iterator(),返回了Iterator接口的实现类的对象

package TestDemo;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorDemo {
public static void main(String[] args) {
Collection coll = new ArrayList<>() ;
coll.add(“abc1”);
coll.add(“abc2”);
coll.add(“abc3”);
coll.add(“abc4”);
//使用迭代器对集合ArrayList中的元素进行取出操作:
//第一步:调用集合的方法iterator获取实例化对象
// 接口的引用等于一个实现类的对象
Iterator it = coll.iterator();
// 第二步:接口实现类对象,调用方法hasNext判断集合中是否有元素
// boolean b = it.hasNext() ;
// System.out.println(b);
// 第三部,接口的实现类对象,调用方法next取出集合中的元素;
// String str = it.next() ;
// System.out.println(str);
while(it.hasNext()) {
System.out.println(it.next());
}
}
}

迭代器是一个通用的取出数据的操作,不管是什么集合,都可以使用迭代器取出;

ArrayList array
Iterator it = array.iterator()
while(it.hasNext()){
String s = it.next();
}
此时指针位置在-1 ;
当循环开始的时候从0开始循环
有数据,传出,指针+1 ;

所有有了next()指针才会移动;
如果没有next会变成死循环;

如果取完再取的话会产生没有元素的异常 ;
所以迭代器只能迭代一次 ;

迭代器的for循环写法:
for(Iterator it = coll.iterator(); it.Next();){
sysout (it.next());
}

由于for循环不易理解,所以基本都是用while循环

Collection 的转型:

Collection coll = new ArrayList();
当不指定泛型的时候,集合什么都存;
此时coll.add(Object o);
同样此时使用迭代器的泛型也要取消掉
Iterator i = coll.iterator();
循环取出的数据就是Object类型;
但是会存在安全隐患;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值