Joanofarc_alter 2022-09-05 18:50 采纳率: 92.9%
浏览 16
已结题

练习泛型修饰符时构建ListUtil工具类使用迭代器方法遍历失败

问题遇到的现象和发生背景

练习泛型修饰符时构建ListUtil工具类使用迭代器方法遍历失败

问题相关代码,请勿粘贴截图

工具类

package A02_genericDemo2;

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

public class ListUtil {
    private  ListUtil() {


    }
    //泛型修饰符要写在修饰类之后
    public static<E> void addAll(ArrayList<E> list,E e1,E e2){
            list.add(e1);
            list.add(e2);
    }
    //在调用方法时可以添加任意个元素
    public static<E> void addAll2(ArrayList<E> list,E...e){
            //e的底层是一个数组
        //1.for遍历
       /* for (int i = 0; i < e.length; i++) {
            list.add(e[i]);
        }*/
        //2.增强for遍历
        /*for (E tempEle : e) {
            list.add(tempEle);
        }*/
        //3.迭代器遍历
       Iterator<E> it = list.iterator();
        while(it.hasNext()){
             E e1= it.next();
             list.add((E)e1);
        }
    }

}


测试类

package A02_genericDemo2;
import java.util.ArrayList;
import java.util.Iterator;

public class Test01 {
    public static void main(String[] args) {
        ArrayList<String> list1=new ArrayList<>();
        ListUtil.addAll2(list1,"nihao","zixiangpeng","zhangsan","王五");
        System.out.println(list1);



    }
}


  • 写回答

2条回答 默认 最新

  • a5156520 2022-09-05 19:18
    关注

    使用Iterator遍历的是list集合,而不是addAll2方法里的可变长度参数e,使用for-each来遍历可变长度参数e,然后把它逐一添加到list即可。修改如下:
    参考链接:
    Java中方法参数后面“...“的理解_ID_云泽的博客-CSDN博客_java 参数...

    
    import java.util.ArrayList;
    import java.util.Iterator;
     
    public class ListUtil {
        private  ListUtil() {
     
     
        }
        //泛型修饰符要写在修饰类之后
        public static<E> void addAll(ArrayList<E> list,E e1,E e2){
                list.add(e1);
                list.add(e2);
        }
        //在调用方法时可以添加任意个元素
        public static<E> void addAll2(ArrayList<E> list,E...e){
                //e的底层是一个数组
            //1.for遍历
           /* for (int i = 0; i < e.length; i++) {
                list.add(e[i]);
            }*/
            //2.增强for遍历
            /*for (E tempEle : e) {
                list.add(tempEle);
            }*/
            //3.迭代器遍历
    //       Iterator<E> it = list.iterator();
    //        while(it.hasNext()){
    //             E e1= it.next();
    //             list.add((E)e1);
    //        }
            
            for(E s:e) {
                list.add(s);
            }
            
        }
        
        public static void main(String[] args) {
            ArrayList<String> list1=new ArrayList<>();
            ListUtil.addAll2(list1,"nihao","zixiangpeng","zhangsan","王五");
            System.out.println(list1);
     
     
     
        }
     
    }
    
    
     
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP