Java高级学习-集合
集合是java中提供的一种工具,可以用来存储多个数据,
集合重写了toString,可以直接打印集合元素
集合与数组的区别:
- 集合长度可变,数组长度固定。
- 数组存储同一种类型元素,存储值或者对象(引用类型),集合只能存储对象,且对象类型可以不一致。
集合框架
Collection接口:共性方法,没有带索引的方法。
List接口:有序的集合,取出元素顺序相同,允许重复元素,有索引。
Vector,ArraryList,LinkedList
Set接口,不允许存储重复元素,没有索引
TreeSet(无序),HashSet(无序),LinkedHashSet(有序)
List接口:有序的集合(取出元素顺序相同),允许重复元素,有索引。
目标:存储数据,遍历集合,集合特性
Collection功能
所有单列集合最顶层的接口。共性方法,单列集合
创建集合对象,可以使用多态:
Collection coll = new Arraylist<>;
boolean add ;coll.add(" xx ");
boolean remove
boolean contains(E e):判断当前集合是否包含指定元素
boolean isEmpty()
int size()
Object[ ] toArray()把集合中的元素,存储到数组中
void clear( ) 清空集合元素,不删除元素
Iterator迭代器
接口:迭代访问(遍历)集合的元素。
迭代,再取元素前先判断集合中有没有元素,如果有就取出来,再继续判断,直到取完。
public Iterator iterator ( )
boolean hasNext( ) : 如果还有元素可以迭代,返回true
E next():返回迭代的下一个元素,把指针向后移动一位
Iterator迭代器是一个接口,需要Iterator接口的实现类,获取方式为:Collection接口中有一个方法叫 iterator( ) ,这个方法返回的是迭代器的实现类对象。
Iterator<> iterator( ) 返回此Collection的元素上进行迭代的迭代器。
1.使用集合中的方法iterator( ) 获取迭代器的实现类对象,使用Iterator接口进行接收(多态)
Iterator 接口也是有泛型的,跟着集合的泛型类型走。
Iterator a = coll.Iterator( ); //获取迭代器的实现类多想,把指针(索引)指向集合的-1索引。
2.使用Iterator接口的方法hasNext判断还有没有下一个元素,有就用Next取出来。
迭代器取出集合元素可以使用循环优化,但不知道循环元素大小,使用while
while(a.hasnext() ){ String s = a.next() ; }
for( Iterator<String> a = coll.Iterator( ); a.hasnext() ; ) { String s = a.next() ; }
//因为next()会移动指针,所以for的步进表达式不用写。
- 1
- 2
- 3
增强for
底层使用的迭代器,使用for循环简化迭代器格式。
遍历集合和数组,public Iterator iterator 实现这个接口允许对象成为foreach语句的目标。
for( 集合/数组的数据类型 变量名 : 集合名/数组名 ) { sout ( 变量名 ) ; }
注意:这个for循环必须有目标,且为集合/数组。
作业
简述迭代器的实现原理
当遍历集合时,首先通过调用集合的iterator()方法获得迭代器对象,然后使用hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素。
Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素,在调用Iterator的next()方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。
文章来源: blog.csdn.net,作者:αβγθ,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_38022166/article/details/115381844
- 点赞
- 收藏
- 关注作者
评论(0)