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()+",");
}
}
}

最新文章

  1. org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [XXX] in DispatcherServlet with name &#39;springMVC&#39;
  2. c# TCP Socket通讯基础
  3. java 判断某一天是当年的哪一天
  4. Oracle-单表合并列
  5. 重温CSS:Border属性
  6. Javascript 基础知识笔记
  7. Linux下追踪函数调用,打印栈帧
  8. Java进阶(三十) 判断字符串编码类型
  9. cesium加载纽约市3dtiles模型
  10. Java try-cath-finally异常
  11. chat.php
  12. Thinkphp框架中自定义修改success和error页面
  13. C# 23种设计模式汇总
  14. 为什么访问json接口出现文件下载
  15. 51Nod 1677 treecnt
  16. 洛谷P4843 清理雪道
  17. php 三元运算符实例详细介绍
  18. RTMP与HLS压力测试工具安装与配置
  19. 英国诗人乔叟Dethe&#160;is&#160;my&#160;Finaunce金融
  20. js时间格式化函数(兼容IOS)

热门文章

  1. USACO[19-20]Dec银组题解
  2. Mybatis注解开发单表CRUD
  3. Tensorflow 将训练模型保存为pd文件
  4. Net Core3.1 添加 Swagger
  5. Java笔记--多线程
  6. [Codeforces #608 div2]1272B Blocks
  7. linux下python开发环境的安装
  8. PHP: isset与empty的区别
  9. BInder机制总结
  10. NoSql相关