zoukankan      html  css  js  c++  java
  • 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()+",");
            }    
        }
    }
  • 相关阅读:
    dubbo入门(一)
    java中文件操作《一》
    Unity 游戏框架搭建 2019 (七) 自定义快捷键
    凉鞋:我所理解的框架 【Unity 游戏框架搭建】
    Unity 游戏框架搭建 2019 (六) MenuItem 复用
    Unity 游戏框架搭建 2019 (五) 打开所在文件夹
    Unity 游戏框架搭建 2019 (四) 导出 UnityPackage
    Unity 游戏框架搭建 2019 (三) 生成文件名到剪切板
    Unity 游戏框架搭建 2019 (二) 文本复制到剪切板
    Unity 游戏框架搭建 2019 (一) 简介与第一个示例文件名的生成
  • 原文地址:https://www.cnblogs.com/JYDesigner/p/9339538.html
Copyright © 2011-2022 走看看