从资源数组中获取List <integer>

时间:2016-01-24 18:48:53

标签: java android arrays

我有一个带整数的字符串数组资源。

<string-array name="navChildRatings">
    <item>12</item>
    <item>12</item>
    <item>17</item>
    <item>123</item>
    <item>8</item>

</string-array>

我的目标是将它们放入List<Integer>类型的列表中 作为第一步,我知道它们可以通过以下方式分配到整数数组中:

int[] ratings = Arrays.asList(getResources().getIntArray(R.array.navChildRatings));

我试图避免循环遍历整数数组(整数)并且必须逐个添加到整数列表(java.lang.Integer)。

  1. 有没有直接的方法将字符串数组转换为List<Integer>
    或者,或者
  2. 是否可以直接将int[]数组分配给List<Integer>
  3. 注意:我的动机纯粹是为了拥有更优雅的代码。我知道如何通过循环数组来做到这一点。但是,例如,在Strings的情况下,如果你直接分配它,它就有效:

    List<String> names = Arrays.asList(getResources().getStringArray(R.array.navChildNames));
    

1 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的,因为asList没有处理装箱(包裹原语),也不会自动创建对象。

如果您希望保持代码优雅并使用Java8,您可以轻松创建lambda以将其作为一行

如果你不使用Java8,只需创建一个简单的方法将 int [] 转换为列表

    ArrayList<Integer> getList(int[] a)
    {
        List<Integer> l = new ArrayList<Integer>();

        for(int i : a)
            l.add( new Integer(i) );

        return l;
    }

然后

    List<Integer> items = getList(ratings);