【问题标题】:Converting ArrayList<String> to int[]将 ArrayList<String> 转换为 int[]
【发布时间】:2015-12-06 21:17:05
【问题描述】:

在我的代码中,我使用此代码将ArrayList&lt;String&gt; 转换为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");
    }
}

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

【问题讨论】:

  • 您必须遍历每个元素,并转换每个元素。很难做得更好更快...
  • @guillaumegirod-vitouchkina 我不明白迭代每个元素是什么意思。这就是 Viacheslav Vedenin 下面的答案吗?
  • 是的,你的 String[] stringArray = oneList.toArray(new String[oneList.size()]);可以避免,如给出的解决方案。

标签: java arrays integer


【解决方案1】:

最好使用以下代码:

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");
    }
}

在您的代码中:

1) 您创建了一个 String[] 数组,但根本不需要。

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

3) 如果你有异常,arrayOfValues 有空元素,例如如果 oneList = {"1", "aaa", "2"} 然后 arrayOfValues = {1, 0, 2}。然而,如果 arrayOfValues = {1, 2}

有时会更好

【讨论】:

  • 为什么 for each 循环更好?
  • 在大多数情况下它更具可读性,因此其他程序员可以很容易地理解您的代码
  • 当您将其替换为for (int i ... 时,我只是看不到需要,然后在第一行执行String value = oneList.get(i)。虽然它更具可读性,但当您必须记住在 2 个不同的行中手动分配和递增 i 时,它就不那么简洁了。
  • 不要捕获“异常”。而是捕获 NumberFormatException,你不想捕获所有可能出错的东西。
猜你喜欢
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 2013-10-16
相关资源
最近更新 更多