【问题标题】:ArrayList First Element findingArrayList 第一个元素查找
【发布时间】:2017-12-27 01:39:19
【问题描述】:

我是Collection Framework 的新手。我正在使用ArrayList() 运行Java 程序。当我尝试循环它以获取它的元素时,它会抛出类似

的错误
HelloWorld.java:15: error: cannot find symbol                                                                                                                                   
           for(int k=0;k<al.length;k++)                                                                                                                                         
                           ^                                                                                                                                                    
  symbol:   variable length                                                                                                                                                     
  location: variable al of type ArrayList<String>                                                                                                                               
HelloWorld.java:17: error: array required, but ArrayList<String> found                                                                                                          
             System.out.println("elements are"+al[k]);  

这是我写的代码。

import java.util.ArrayList;

public class HelloWorld{
   public static void main(String[] args) {
       ArrayList<String> al = new ArrayList<String>();
       al.add("pen");
       al.add("pencil");
       al.add("ink");
       al.add("notebook");
       al.add("book");
       al.add("books");
       al.add("paper");
       al.add("white board");

       for(int k=0;k<al.length;k++)
   {
         System.out.println("elements are"+al[k]);
  }
   }
}

帮我指出我的错误。提前致谢

【问题讨论】:

  • ArrayList中没有length字段,需要调用al.size()方法
  • arraylist 有 size 属性而不是 length
  • 然后你不能使用索引器,你必须使用get
  • 使用 al.size() 和 al.get(k)
  • 优雅地使用foreachstream

标签: java arrays arraylist


【解决方案1】:

试试这个 你不能把 arrylist 当作数组

for(int k=0;k<al.size();k++){
    System.out.println("elements are"+ al.get(k));
}

【讨论】:

    【解决方案2】:

    ArrayList 有一个 size 方法返回列表的大小,还有一个 get 方法来获取存储在特定索引处的元素。

    所以你的 for 循环可能看起来像:

    for(int k=0; k < al.size(); k++) {
        System.out.println("elements are" + al.get(k));
    }
    

    或者,如果您愿意,您可以在没有索引的情况下遍历每个元素:

    for(String text : al) {
        System.out.println("elements are" + text);
    }
    

    如果你想在 java8 中使用streams,你也可以这样做:

    al.stream().forEach(System.out::println);
    

    如果你有兴趣,还有另一个answer that also talks about looping through lists in java

    【讨论】:

    • 真的有用吗?在 ArrayList 上像 al[k] 这样的索引应该给出一些错误?
    • @SagarGautam 是的,你是对的。我编辑了答案以使用get 方法。谢谢。
    • System.out::println
    • 太棒了,兄弟
    【解决方案3】:

    由于 ArrayList 是一个集合而不是一个数组,你可以使用 al.size() 代替。

    如果你想使用索引试试这个

    al.get(k)
    

    【讨论】:

      【解决方案4】:

      你可以试试这个方法:

      import java.util.ArrayList;
      
      public class HelloWorld{
         public static void main(String[] args) {
             ArrayList<String> al = new ArrayList<String>();
             al.add("pen");
             al.add("pencil");
             al.add("ink");
             al.add("notebook");
             al.add("book");
             al.add("books");
             al.add("paper");
             al.add("white board");
      
             for(int k=0;k<al.size();k++)
             {
               System.out.println("elements are"+ al.get(k) );
             }
         }
      }
      

      【讨论】:

        【解决方案5】:
        ArrayList<String> al = new ArrayList<String>();
        al.add("pen");
        al.add("pencil");
        al.add("ink");
        al.add("notebook");
        al.add("book");
        al.add("books");
        al.add("paper");
        al.add("white board");
        
        for(int k=0;k<al.size();k++)
          {
              System.out.println("elements are"+al.get(k));
          }
        

        您需要使用size() 才能找出arraylistlength 当您使用 Eclipse 之类的编辑器时,希望您能轻松克服所有这些方法,并且语法错误本身也有助于正确学习。

        【讨论】:

          【解决方案6】:
          import java.util.ArrayList;
          public class HelloWorld
          {
            public static void main(String[] args)
             {
               ArrayList<String> al = new ArrayList<String>();
               al.add("pen");
               al.add("pencil");
               al.add("ink");
               al.add("notebook");
               al.add("book");
               al.add("books");
               al.add("paper");
               al.add("white board");
          
               for(int k=0;k<al.size();k++)
                {
                 System.out.println("elements are"+al.get(k));
                }
             }
          }
          

          【讨论】:

            【解决方案7】:

            由于您是 Collection 新手,因此您将 Array 与 Arraylist 混淆了。 Arraylist 没有长度。它有size() 方法。

            既然已经给出了很好的选择,所以使用 java 8 Stream

            ArrayList<String> al = new ArrayList<String>();
                    al.add("pen");
                    al.add("pencil");
                    al.add("ink");
                    al.add("notebook");
                    al.add("book");
                    al.add("books");
                    al.add("paper");
                    al.add("white board");
            
                    al.stream().forEach(System.out::println);
            

            【讨论】:

              猜你喜欢
              • 2012-06-11
              • 2013-02-09
              • 1970-01-01
              • 2014-07-04
              • 2021-06-16
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多