繁体   English   中英

如何从一个 class 传递一个二维数组以在另一个中用作参数,以便它们可以分类为 2 个 ArrayList

[英]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.

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