Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换ArrayList<;字符串>;至int[]_Java_Arrays_Integer - Fatal编程技术网

Java 转换ArrayList<;字符串>;至int[]

Java 转换ArrayList<;字符串>;至int[],java,arrays,integer,Java,Arrays,Integer,在我的代码中,我使用此代码将ArrayList转换为int[] ArrayList<String> oneList = new ArrayList<String>(); oneList.add("7"); oneList.add("525"); oneList.add("85"); oneList.add("365"); oneList.add("78"); oneList.add("1"); String[] stringArray = oneList.toArra

在我的代码中,我使用此代码将
ArrayList
转换为
int[]

ArrayList<String> oneList = new ArrayList<String>();

oneList.add("7");
oneList.add("525");
oneList.add("85");
oneList.add("365");
oneList.add("78");
oneList.add("1");

String[] stringArray = oneList.toArray(new String[oneList.size()]);

int[] arrayOfValues = new int[oneList.size()];  

for(int i = 0;i < stringArray.length;i++)
{   
    try
    {
        arrayOfValues[i] = Integer.parseInt(stringArray[i]);
    }
    catch(Exception e)
    {
        System.out.println("Not an integer value");
    }
}
ArrayList oneList=new ArrayList();
一份清单。添加(“7”);
一份清单。添加(“525”);
一份清单。添加(“85”);
oneList.添加(“365”);
一份清单。添加(“78”);
一份清单。添加(“1”);
String[]stringArray=oneList.toArray(新字符串[oneList.size()]);
int[]arrayOfValues=new int[oneList.size()];
对于(int i=0;i

这是完成这项工作最有效的方式还是我应该采取不同的方式?如果您有其他方法,我也会对其他方法感兴趣。

最好使用以下代码:

ArrayList<String> oneList = new ArrayList<String>();

oneList.add("7");
oneList.add("525");
oneList.add("85");
oneList.add("365");
oneList.add("78");
oneList.add("1");

int[] arrayOfValues = new int[oneList.size()];  
int i = 0;
for(String value: oneList)
{   
    try
    {
        arrayOfValues[i] = Integer.parseInt(value);
        i++;
    }
    catch(Exception e)
    {
        System.out.println("Not an integer value");
    }
}
ArrayList oneList=new ArrayList();
一份清单。添加(“7”);
一份清单。添加(“525”);
一份清单。添加(“85”);
oneList.添加(“365”);
一份清单。添加(“78”);
一份清单。添加(“1”);
int[]arrayOfValues=new int[oneList.size()];
int i=0;
for(字符串值:oneList)
{   
尝试
{
arrayOfValues[i]=整数.parseInt(值);
i++;
}
捕获(例外e)
{
System.out.println(“非整数值”);
}
}
在代码中:

1) 您创建了一个字符串[]数组,但根本不需要它

2) 使用for-each循环优于for(int i…)

3) 如果有异常,arrayOfValues有空元素,例如
oneList={“1”,“aaa”,“2”}然后arrayOfValues={1,0,2}。但是,如果arrayOfValues={1,2}

您必须迭代每个元素,并转换每个元素,则有时会更好。很难做得更好更快…@guillaumegirod vitouchkina我不明白你所说的迭代每个元素是什么意思。下面的答案是Viacheslav Vedenin所做的吗?是的,您的字符串[]stringArray=oneList.toArray(新字符串[oneList.size()]);可以避免,如给出的解决方案中所述。为什么for each循环更好?在大多数情况下,它更可读,因此其他程序员可以非常容易地理解您的代码。如果您将其替换为for(int i…
,然后执行
String value=oneList.get(i),我就看不出有什么必要了
在第一行。虽然它更具可读性,但当您必须记住在两行中手动分配和递增
i
时,它就不那么简洁了。不要捕捉“异常”。相反,捕捉NumberFormatException,您不希望捕捉可能出错的所有内容。