Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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 如何将一个类中的2D数组作为参数传递给另一个类,以便将它们排序为2个ArrayList_Java_Arrays - Fatal编程技术网

Java 如何将一个类中的2D数组作为参数传递给另一个类,以便将它们排序为2个ArrayList

Java 如何将一个类中的2D数组作为参数传递给另一个类,以便将它们排序为2个ArrayList,java,arrays,Java,Arrays,我有一个带有2D数组的类,它存储由方法随机生成的值。我想使用此2D数组传递其值,以供另一个类中的“GenerateGradesUranium()”方法使用 带有数组的类:(据我所知,这个类对于我希望它实现的目的来说是很好的) 因此,2D数组用作“generateGrades()”中的参数,然后需要根据>25(高级)或≤ 25(低级) 我尝试了多种方法让数组列表从第一个类进入第二个类,但都没有成功。我看过参考书和视频教程,但它们通常只处理非2d数组或在同一类中使用数组。我是Java新手,我已经陷入

我有一个带有2D数组的类,它存储由方法随机生成的值。我想使用此2D数组传递其值,以供另一个类中的“GenerateGradesUranium()”方法使用

带有数组的类:(据我所知,这个类对于我希望它实现的目的来说是很好的)

因此,2D数组用作“generateGrades()”中的参数,然后需要根据>25(高级)或≤ 25(低级)

我尝试了多种方法让数组列表从第一个类进入第二个类,但都没有成功。我看过参考书和视频教程,但它们通常只处理非2d数组或在同一类中使用数组。我是Java新手,我已经陷入了困境,我非常感谢这方面的帮助,这样我就可以继续了解并完成我程序的其余部分。不知道如何使用初始数组削弱了我使程序按预期工作的能力。试图将2D数组转换为2个数组列表会使问题进一步复杂化


非常感谢

您通过
2D
数组的方式与通过
1D
数组的方式类似:

public void generateGrades(int[][] tray)
{
    // Now here's some pseudo code on how to iterate the tray
    for(int i = 0; i < tray.length; ++i)
    {
        for(int j = 0; j < tray[0].length; ++j)
        {
            int trayElement = tray[i][j];
            if(trayElement less than 25)
            {
                // add it to the lower grade list
            }
            else
            {
                // add it to the higher grade list
             }
        }
    }
}
而是指定类型

ArrayList<Integer>
ArrayList

使用java 8流,您还可以编写:

Map<Boolean, List<Integer>> result = 
    Arrays.stream(tray).flatMapToInt(Arrays::stream).boxed()
        .collect(Collectors.groupingBy(d -> d > 25));

因此,低等级在地图的键下,高等级在键下,很容易检索。

@F-22-Raptor有关原始类型的一点细节,请参阅我的更新答案。也就是说,您不能添加
[i][j]
这些只是
2D数组的索引,而是添加
托盘[i][j]
,或者在我给出的示例中添加
trayElement
ArrayList
ArrayList<Integer>
Map<Boolean, List<Integer>> result = 
    Arrays.stream(tray).flatMapToInt(Arrays::stream).boxed()
        .collect(Collectors.groupingBy(d -> d > 25));
{false=[5, 11, 25, 10, 14, 20, 15, 3, 6, 9], true=[38, 43, 38, 28, 40]}