java - 如何在 2D Arraylist 中找到最大值/秒?
问题描述
我正在尝试使用 Arraylists 而不仅仅是数组来重写旧程序。该程序是 2017 年电子游戏销量前 5 名的数据库,该程序执行的方法之一是查找每个位置的最大值(总共 4 个位置:北美、欧盟、日本和其他销售)。
(注意:总共有 5 列销售额(NA、EU、JP、Other Sales、Global Sales),我只希望该方法在前四列中找到最大值。)
这些是二维数组的片段及其查找最大值的相应方法:
double[][] Sales ={ {41.49,29.02,3.77,8.46,82.74},{29.08,3.58,6.81,0.77,40.24},
{15.85,12.88,3.79,3.31,35.83},{15.75,11.01,3.28,2.96,33},
{11.27,8.89,10.22,1,31.38} };
// maximum value
public static void hiSales(double[][] sales) {
double max1;
double[] max = new double[sales.length];
for(int j=0; j<sales[0].length-1;j++) { //WILL WORK AS LONG AS IT IS SQUARE MATRIX
for (int i = 0; i < sales.length; i++) {
max1 = sales[0][j];
if (sales[i][j] > max1) {
max1 = sales[i][j];
}
if (i == sales.length - 1) {
max[j] = max1;
}
}
}
System.out.println("\n | HIGHEST SALES PER LOCATION |");
System.out.println("\n | NA Sales | | EU Sales | | JP Sales | "
+ "| Other Sales | \n");
System.out.println("— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —\n");
System.out.print(" ");
for(int i=0; i<max.length-1; i++) {
System.out.print(max[i] + "\t");
System.out.print(" ");
}
System.out.println("\n");
System.out.println("— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —");
}
现在,我已经将 2D 数组转换为 2D Arraylist,并且该方法不再起作用,这是我想解决的问题。
这是我转换的新 2D Arraylist:
ArrayList<VGSdata> sales = new ArrayList<>();
VGSdata wii = new VGSdata(41.49,29.02,3.77,8.46,82.74);
VGSdata bros = new VGSdata(29.08,3.58,6.81,0.77,40.24);
VGSdata kart = new VGSdata(15.85,12.88,3.79,3.31,35.83);
VGSdata res = new VGSdata(15.75,11.01,3.28,2.96,33);
VGSdata prb = new VGSdata(11.27,8.89,10.22,1,31.38);
sales.add(wii);
sales.add(bros);
sales.add(kart);
sales.add(res);
sales.add(prb);
那么..如何重写该方法以使其在ArrayList
仍执行相同功能的同时利用数据?
解决方案
如果您不想重写该hiSales
方法,则可以从 arraylist 创建一个二维数组,然后将其传递给该hiSales
方法。
double[][] dataArray = new double[sales.size()][4];
int i=0;
for(VGSdata data : sales) {
dataArray[i][0] = data.displayNA();
dataArray[i][1] = data.displayEU();
dataArray[i][2] = data.displayJP();
dataArray[i][3] = data.displayOS();
i++;
}
// now invoke hiSales
hiSales(dataArray);
推荐阅读
- android - 通过 Intent 手动调用广播接收器时应用程序崩溃
- javascript - 使用 Google Maps JS API 随机拖动/平移一点
- ios - Xcode 无法在运行 iOS 13 的真实 iOS 设备上构建
- javascript - 在单击按钮时如何显示它已被选中并在表单提交时获取该按钮的 id
- mysql - 当且仅当在同一天发布时,将行显示在彼此之上
- java - Async AssertionError 没有使测试用例失败
- python-3.x - 我无法收到 0x11 之后的任何 HEX 数据
- php - 会计年度更改时自动重置发票编号
- webpack - runtimeChunk 的目的是什么?
- java - 对用户隐藏 Javafx 实现