繁体   English   中英

从2D数组收集数字

[英]Collect Numbers from a 2D Array

我想WIRTE的方法称为collectNums这是应该收集的类型的所有元素Number从2D对象数组。 然后,我想在List收集Number类型的所有元素并返回它。

这是我的代码:

public static List<Number> collectNums(Object nrAry[][])
{
    List<Number> numbers = new ArrayList<Number>();
    for(int i = 0; i < nrAry.length; i++) 
    {
        for(int j = 0; j < nrAry[i].length; j++)
        {
            if (nrAry[i][j] instanceof Number) 
            {
                numbers.add(j);
                numbers.add(i);
            }
        }
    }
    return numbers;
}

如果我还不清楚,请告诉我。 感谢大家!

您正在收集数组的索引,而不是存储在数组中的值。

public static List<Number> collectNums(Object nrAry[][])
{
   List<Number> numbers = new ArrayList<Number>();
   for(int i=0;i < nrAry.length; i++)  {
       for(int j=0;j < nrAry[i].length; j++) {
            if (nrAry[i][j] instanceof Number)  {
                numbers.add((Number)nrAry[i][j]);
            }
        }
    }
    return numbers;
}

在Java 8中,它可能更简单:

public static List<Number> collectNums(Object nrAry[][]) {
        return Arrays.stream(nrAry)
                .flatMap(Arrays::stream)
                .filter(x -> x instanceof Number)
                .map(x -> (Number) x)
                .collect(Collectors.toList());
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM