【问题标题】:How can i use a for each loop to print an Arraylist of different objects of different classes我如何使用每个循环来打印不同类的不同对象的 Arraylist
【发布时间】:2018-10-30 23:22:42
【问题描述】:
class Main
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        Loan loan = new Loan();
        Date date = new Date();
        Strings strings = new Strings();
        Frame frame = new Frame();
        Circle circle = new Circle();

        ArrayList<Object> mylist = new ArrayList<Object>();
        mylist.add(loan);
        mylist.add(date);
        mylist.add(strings);
        mylist.add(frame);
        mylist.add(circle);

        for (Object i : mylist)
        {
            System.out.println(mylist.get(i));
        }
         /*
         //this method is working fine
         System.out.println(mylist.get(0));
         System.out.println(mylist.get(1));
         System.out.println(mylist.get(2));
         System.out.println(mylist.get(3));
         System.out.println(mylist.get(4));

         //this method is also working fine
         for (int i = 0; i < 4; i++)
         {
            System.out.println(mylist.get(i));
         }*/

    }
}

我的 Arraylist 是不同的对象类型,并且在每个类中都有带有值的字段和一个 toString 方法(以便可以打印).....如果我不使用循环并且如果我使用迭代循环它工作正常,但我想为每个循环使用一个我使用上述语法但它显示错误。

【问题讨论】:

  • for (Object i : mylist) { System.out.println(i); }

标签: java class object arraylist tostring


【解决方案1】:
myList.forEach(System.out::println); 

并且不要将myList 声明为ArrayList,而仅将其声明为List - 尽可能将变量声明为接口

【讨论】:

    【解决方案2】:

    改变

        for (Object i : mylist)
        {
            System.out.println(mylist.get(i));
        }
    

    到

        for (Object i : mylist)
        {
            System.out.println(i);
        }
    

    foreach 循环中的i 是对象本身而不是索引。

    【讨论】:

      【解决方案3】:

      这里:

      for (Object i : mylist)
      {
          System.out.println(mylist.get(i)); 
                                        ^----- error here
      }
      

      您使用Object 变量作为参数调用myList.get()。
      它在编译时无效,因为ArrayList.get() 将int 作为参数:

      E java.util.ArrayList.get(int index)

      在某种程度上,您可以混合使用 foreach 和“基本 for”语法。
      “basic for”语句需要使用索引:

      for (int i=0; i<mylist.size(); i++) {
           System.out.println(myList.get(i)); 
      }
      

      但 foreach 语法简化了这一点:

      for (Object i : mylist) {
           System.out.println(i); 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        • 2019-01-04
        • 2021-04-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 2017-02-02
        相关资源
        最近更新 更多