Java 如何将一个类中的2D数组作为参数传递给另一个类,以便将它们排序为2个ArrayList
我有一个带有2D数组的类,它存储由方法随机生成的值。我想使用此2D数组传递其值,以供另一个类中的“GenerateGradesUranium()”方法使用 带有数组的类:(据我所知,这个类对于我希望它实现的目的来说是很好的) 因此,2D数组用作“generateGrades()”中的参数,然后需要根据>25(高级)或≤ 25(低级) 我尝试了多种方法让数组列表从第一个类进入第二个类,但都没有成功。我看过参考书和视频教程,但它们通常只处理非2d数组或在同一类中使用数组。我是Java新手,我已经陷入了困境,我非常感谢这方面的帮助,这样我就可以继续了解并完成我程序的其余部分。不知道如何使用初始数组削弱了我使程序按预期工作的能力。试图将2D数组转换为2个数组列表会使问题进一步复杂化Java 如何将一个类中的2D数组作为参数传递给另一个类,以便将它们排序为2个ArrayList,java,arrays,Java,Arrays,我有一个带有2D数组的类,它存储由方法随机生成的值。我想使用此2D数组传递其值,以供另一个类中的“GenerateGradesUranium()”方法使用 带有数组的类:(据我所知,这个类对于我希望它实现的目的来说是很好的) 因此,2D数组用作“generateGrades()”中的参数,然后需要根据>25(高级)或≤ 25(低级) 我尝试了多种方法让数组列表从第一个类进入第二个类,但都没有成功。我看过参考书和视频教程,但它们通常只处理非2d数组或在同一类中使用数组。我是Java新手,我已经陷入
非常感谢您通过
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]}