失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Day 4:集合——迭代器与List接口

Day 4:集合——迭代器与List接口

时间:2024-02-16 04:20:17

相关推荐

Day 4:集合——迭代器与List接口

Collection-迭代方法

1、toArray() 返回Object类型数据,接收也需要Object对象!Object[] toArray();

Collection c = new ArrayList();

Object[] arr = c.toArray();

2、iterator() Collection的方法,返回实现Iterator接口的对象,一般用Iterator接口类型数据接收,体现程序的多态性,是程序灵活的表现

迭代器的作用:就是用于抓取集合中的元素。

迭代器的方法:

hasNext() 问是否有元素可遍历。如果有元素可以遍历,返回true,否则返回false 。

next()获取元素

remove() 移除迭代器最后一次返回 的元素。

NoSuchElementException 没有元素的异常。

出现的原因: 没有元素可以被迭代(抓取)了

import java.util.*;public class Demo1 {public static void main(String[] args) {Collection c = new ArrayList();Collection r = new ArrayList();c.add("李杰");c.add("李英");c.add("李汉斯");c.add("李汉三");c.add("狗蛋");Iterator b = c.iterator();Iterator h = r.iterator();//返回一个迭代器 //疑问:iterator()方法返回的是一个接口类型,为什么接口又可以调用方法可以使用呢? //iterator 实际 上返回的是iterator接口的实现类对象。 System.out.println(b.hasNext());System.out.println(h.hasNext());b.next();b.next();b.remove(); //删除迭代器最后一次返回的元素。/*while(b.hasNext()){ // hasNext() 问是否有元素可以遍历。System.out.println("元素:"+ b.next()); //获取元素}*//*清空集合 的元素while(b.hasNext()){b.next();b.remove();}*/System.out.println("集合的元素:"+ c);}}

因为迭代器不会返回元素,所以remove();方法不会主动移除集合中数据,需要配合next()使用。及删除的是next()最后一次抓取的数据

遍历集合的方法

1、

Object[] arr = c.toArray(); // toArray() 把集合 的元素存储到一个 Object的数组中 返回。

for(int i = 0 ; i<arr.length ; i++){

System.out.print(arr[i]+",");

}

2、使用hasNext() next()组合方法便利

while(it.hasNext()){

User user = (User) it.next();

if(user.account==id&&user.password.equals(password)){

isLogin = true;

}

}

3、

使用get方法遍历集合的元素:

for (int i = 0; i < list.size() ; i++) {

System.out.print(list.get(i)+",");

}

集合的体系:

Collection 单列集合 的根接口

List 如果是实现了List接口的集合类,该集合类具备的特点:有序,可重复

Set 如果是实现了Set接口的集合类,该集合类具备的特点: 无序,不可重复

List接口

有序: 集合的有序不是指自然顺序,而是指添加进去的顺序与元素出来的顺序是一致的

List接口中特有的方法具备的特点: 操作的方法都存在索引值。

只有List接口下面的集合类才具备索引值。其他接口下面的集合类都没有索引值。

List接口中特有方法:

添加

add(int index, E element)

addAll(int index, Collection<? extends E> c)

获取:

get(int index)

indexOf(Object o)

lastIndexOf(Object o)

subList(int fromIndex, int toIndex)

修改:

set(int index, E element)

迭代

listIterator()

import java.util.*;public class Demo2 {public static void main(String[] args) {List list= new ArrayList();list.add("李杰");list.add("李英");list.add("李汉三"); list.add("李汉斯");/* //添加方法list.add(2, "李四"); List list2 = new ArrayList();list2.add("张三");list2.add("王二");list.addAll(2,list2);*//*//获取的方法 System.out.println(list.get(1)); //根据索引值获取集合中的元素使用get方法遍历集合的元素:for (int i = 0; i < list.size() ; i++) {//判断集合长度用size()System.out.print(list.get(i)+",");}System.out.println(list.indexOf("李杰"));//找出指定元素第一次出现在集合中 的索引值System.out.println(list.lastIndexOf("李汉斯"));//找指定的元素最后一次出现在集合中的索引值List subList = list.subList(1, 3); //指定开始与结束的索引值截取集合中的元素。System.out.println(subList)//返回值是一个List输出子集合的元素 */ list.set(3, "李白"); //使用指定的元素替换指定索引值位置的元素。 System.out.println(list);//输出集合的元素,查看效果 }}

ListIterator接口特有的方法:

添加:

hasPrevious() 判断是否存在上一个元素

previous() 当前指针先向上移动一个单位,然后再取出当前指针指向的元素

next(); 先取出当前指针指向的元素,然后指针向下移动一个单位

add(E e) 把当前有元素插入到当前指针指向的位置上

set(E e) 替换迭代器最后一次返回的元素

import java.util.*;public class Demo3 {public static void main(String[] args) {List list = new ArrayList();list.add("李杰");list.add("李英");list.add("李汉三");list.add("李汉斯");ListIterator it = list.listIterator(); //返回的是一个List接口中特有的迭代器/*System.out.println(it.hasPrevious())//判断是否有上一个元素,有true,没有false System.out.println(it.previous());//获取上一个元素it.next();System.out.println(it.previous());//获取上一个元素 while(it.hasNext()){it.next();}while(it.hasPrevious()){System.out.println("元素:"+ it.previous());}it.next();it.next();it.add("李白");*/it.next();it.next();it.set("李白");System.out.println("集合的元素:"+ list); }}

作业: 使用三种方式遍历集合的元素.

一、 使用get方法遍历。

二、 使用迭代器正序遍历。

三、 使用迭代器逆序遍历。

import java.util.*;public class Demo4 {public static void main(String[] args) {List list = new ArrayList();list.add("李杰");list.add("李英");list.add("李汉三");for(int i = 0 ; i<list.size() ; i++){System.out.print(list.get(i)+",");}System.out.println();ListIterator it = list.listIterator();while(it.hasNext()){System.out.print(it.next()+",");}System.out.println();while(it.hasPrevious()){System.out.print(it.previous()+",");} }}

如果觉得《Day 4:集合——迭代器与List接口》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。