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 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,