[英]How to pass a 2D Array from one class to be used in another as a parameter so that they can be sorted into 2 ArrayLists
我有一个带有 2D 数组的 class 存储由方法随机生成的值。 我想使用这个二维数组来传递它的值,以供另一个 class 中的“GenerateGradesUranium()”方法使用。
带有数组的 class :(据我了解,这个 Class 非常适合我希望它实现的目的)。
public class GenerateUranium
{
int[][] tray = new int[5][3];
private int grading = 0;
private Random randomGenerator;
public GenerateUranium()
{
randomGenerator = new Random();
}
public void generateSample()
{
for (int i = 0; i < tray.length; i++)
{
for (int j = 0; j < tray[i].length; j++)
{
grading = randomGenerator.nextInt(50);
tray[i][j]=grading;
}
}
printTray(tray);
}
class 和我想在其中使用二维数组的方法。(我完全迷路了)。
import java.util.ArrayList;
public class LithiumGradingUranium
{
private ArrayList highGradeUranium;
private ArrayList lowGradeUranium;
public LithiumGradingUranium()
{
}
public void generateGradesUranium() // This is the method where I want to use the Array as a parameter
{
}
因此 2D 数组在 'generateGrades()' 中用作参数,然后需要根据 > 25 (highGrade) 或 ≤ 25 (lowGrade) 的值在两个数组列表之间进行拆分
我尝试了多种方法来从第一个 class 获取数组列表以在第二个中工作,但它们没有奏效。 我看过书籍参考和视频教程,但它们通常只处理非二维 Arrays 或在同一 class 中使用数组。 我是 Java 的新手,我已经陷入了困境,我非常感谢这方面的帮助,这样我就可以继续找出并完成我的程序的 rest。 不知道如何使用初始数组正在削弱我使程序按预期工作的能力。 尝试将 2D 数组转换为 2 个数组列表会使问题进一步复杂化。
非常感谢
我不在电脑前,自从我处理了 2d arrays 以来已经有一段时间了,但这不起作用吗?
public void generateGrades(int[] [] tray) {
...
}
你通过2D
arrays 以类似的方式通过1D
arrays 说:
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
}
}
}
}
还有一件事,当使用 generics 时,不要使用所谓的raw types
,例如
ArrayList
而是指定类型
ArrayList<Integer>
使用 java 8 个流,也可以这样写:
Map<Boolean, List<Integer>> result =
Arrays.stream(tray).flatMapToInt(Arrays::stream).boxed()
.collect(Collectors.groupingBy(d -> d > 25));
会给你一个java.util.HashMap
和 Boolean 键,如下所示:
{false=[5, 11, 25, 10, 14, 20, 15, 3, 6, 9], true=[38, 43, 38, 28, 40]}
因此,在 map 中,低等级在假密钥下,高等级在真密钥下,并且很容易检索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.