java.lang.IndexOutOfBoundsException : Index: 0, 大小 : 0 at java. util.ArrayList.rangeCheck

标签 java

我正在尝试将值设置为类类型的列表。这些值正在从数据库(MYSQL)中获取。这些值正在正确获取,但在设置列表时可能会发生一些错误。

    public List<DataFetch> fetchdata(){
         List<DataFetch> ob=new ArrayList<DataFetch>();
         ResultSet rs = null;
          PreparedStatement pst = null;
          Connection con = getConnection();
          String stm = "Select * from client";
          try {   
             pst = con.prepareStatement(stm);
             pst.execute();
             rs = pst.getResultSet();
             int i=0;
             while(rs.next()){

                String clientname=rs.getString(1);
                String clientid=rs.getString(2);
               ob.set(i,new DataFetch(clientname,clientid));
               i++;
               /*  ob.setClientname(clientname);
                ob.setClientid(clientid);*/
             }
            // return ob;
          } catch (SQLException e) {
             e.printStackTrace();
          }

          return (List<DataFetch>)ob;

    }

我试图在控制台上打印这些值,但遇到以下问题:

Sep 05, 2015 11:20:24 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/DataTab] threw exception [Index: 0, Size: 0] with root cause
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(ArrayList.java:635)
    at java.util.ArrayList.set(ArrayList.java:426)
    at UserData.fetchdata(UserData.java:49)
    at UserData.execData(UserData.java:29)

请给出适当的解决方案。提前致谢。

最佳答案

抛出异常是因为您尝试在空列表中设置元素。为了消除错误,您必须替换此行(#49):

           `ob.set(i,new DataFetch(clientname,clientid));`

通过这个:

           `ob.add(new DataFetch(clientname,clientid));`

没有i索引,只需将元素添加到列表中。

关于java.lang.IndexOutOfBoundsException : Index: 0, 大小 : 0 at java. util.ArrayList.rangeCheck,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32416443/

相关文章:

java - 如何发出和处理自定义事件?

Java文件逆向读写[逐字节]

java - Google Cloud Dataflow 写入数据(TextIO 或 DatastoreIO)时出现问题

java - Java中集合对象的最大值

java - 自定义未经检查的异常不会导致抛出和调用方方法返回

java - 如何在 JButton ActionListener 中调用需要 InterruptedException 的方法

java - 如果输入仅包含 1 和 0,则将其从二进制转换为十进制

java - 如何防止在类的实例上调用静态方法?

java - 我有哪些用于反编译类文件和 JAR 的免费和/或开源选项?

java - 在java中同时使多个worker的缓存无效而不影响性能