如何在字符串数组中存储arraylist值



com.itextpdf.text.DocumentException:java.lang.ArrayStoreException

Q。当尝试以下代码时,试图将ArrayList更改为上面的String[]数组类型,出现异常。我不知道怎么了。

try {
                Class.forName("com.mysql.jdbc.Driver");
        String url ="jdbc:mysql://localhost/falg_check";
        con = DriverManager.getConnection(url,"root", "root");
        stmt = con.createStatement();
        rs4 = stmt.executeQuery("SELECT * from records");
        String[] arrayOfStrings;          
        ArrayList<String[]> name=new ArrayList<String[]>(); 
        while(rs4.next()){
            String insert =rs4.getString("name");
            final String[] res={insert};                
            name.add(res);                                                  
        }
        //Object[] x=name.toArray();

 arrayOfStrings = name.toArray(new String[name.size()]); //<---------------
        }
        catch(Exception e) {
            System.out.println(ioe);
            throw new ExceptionConverter(ioe);
        }

EDIT:*我需要一维数组,这样我就可以把这些值放在text.setChoices(arrayOfStrings)中;它通过JAVA在PDF文件的下拉菜单中设置选项*

编辑:如何避免重复。:

我希望ArrayList用String Array更改引用中的类型,而stackoverflow上的任何问题都不是这样。我也想要一维数组。理解2D int数组和线性字符串数组之间的区别并不难。是的,这个概念可能与其他几个类型转换问题相匹配,但这是一个部分/条件不同的问题。

您已经定义了

ArrayList<String[]> name=new ArrayList<String[]>()

当您调用name.toArray()时,您会得到一个原始列表所包含类型的元素数组。由于您的列表包含String[]实例,name.toArray()返回一个String[][],即字符串数组的数组,而不是字符串数组。

因此,要么您实际上必须使用字符串数组的数组:

String[][] arrayOfStrings;
...
arrayOfStrings = name.toArray(new String[name.size()][]);

或者使用字符串列表而不是字符串数组列表:

ArrayList<String> name=new ArrayList<String>();
while(rs4.next())
{
    String insert = rs4.getString("name");
    name.add(insert);
}

或者,在转换为数组之前,将字符串数组列表展平为字符串列表:

String[] arrayOfStrings;
ArrayList<String[]> name = new ArrayList<String[]>();
while(rs4.next())
{
    String insert = rs4.getString("name");
    final String[] res={insert};
    name.add(res);
}
....
ArrayList<String> intermediate = new ArrayList<String>();
for (String[] stringArray: name)
{
    if (stringArray != null)
    {
        intermediate.addAll(java.util.Arrays.asList(stringArray));
    }
}
arrayOfStrings = intermediate.toArray(new String[name.size()]);

最新更新