这个我要解释的概念似乎很难讨论,但我会尽量提供尽可能多的细节。
所以有2个班级。其中一个是设置setter和getter的属性,另一个是我主要进行所有比较的文件。
我想要做的比较是在数组中,但要考虑的属性太多。这就是目前的情况:
[[Year, Month, type1, type2, name, $], [Year, Month, type1, type2, name, $], [Year, Month, type1, type2, name, $]]
只有两个是整数,是$和year,其余是字符串。 现在您已经了解了我正在使用的属性,这里有一个小片段,我用它来从Excel中收集这些信息。
ArrayList<customType> workList = new ArrayList<customType>();
for (int i = start; i <= end; i++) {
Row r = sheet.getRow(i);
ArrayList tmp = new ArrayList();
tmp.setYear((int) row.getCell(0).getNumericCellValue());
tmp.setMonth(row.getCell(1).getStringCellValue());
tmp.setType1(row.getCell(2).getStringCellValue());
tmp.setType2(row.getCell(3).getStringCellValue());
tmp.setName(row.getCell(4).getStringCellValue());
tmp.setPrice((int) row.getCell(5).getNumericCellValue());
workList.add(temp);
}
好的,所以我在arraylist中有一个可能有500行的列表。它们按照excel的年份和月份排序。
例如:
因此,对于HaloReach游戏,您可以看到它在3月和2月缺少一个字段。我想回到列表并添加年,月,类型1,类型2,名称,但是值为$ 0另外,看看大富翁游戏,它不存在未来或现在,我想复制粘贴我列出的每个月都有0美元的东西。
例如:
我可以使用散列集吗?我一直在尝试这个,但我无法完成它。我喜欢500行注释代码lol。
我这样做的主要原因是我可以创建另一个arrayList,它将保存前几个月的临时arrayList。例: 此arraylist仅显示当前月份:
2011 Mar Game Racing Forza [60, 60, 0, 0] <-- from latest to oldest
2011 Mar Game Shooter HaloReach [45, 0, 45, 45]
etc..
如果名单没有显示在列表中,我想为价格添加0 ..但我想查看当前月份。有更好的方法吗?如果需要,我可以尝试提供更好的解释。
编辑:我没有mysql数据库就完成了。我花了6个多小时。谢谢你的建议。也许下次我会尝试mysql方法。
答案 0 :(得分:2)
一种更有意义的方法是使用像MySQL这样的真实数据库,您可以使用SQL轻松查询,排序和组织。这将为您想要处理此数据的任何内容提供简单的解决方案。到目前为止,你所选择的道路只会导致疯狂和绝望。
答案 1 :(得分:1)
如果我是你,我会先把我的物品分解得更好。当您将系统分解为更多逻辑组件时 - 他们可以真正开始为您做繁重的工作。请考虑以下事项:
public class Game
{
private String name;
private String category;
private Map<String, Double> pricesByDate;
// Constructors, getters, setters
public void addPrice(String monthYear, Double price)
{
pricesByDate.put(monthYear, price);
}
public Double getPrice(String monthYear)
{
// here, let the object do the work for you
Double price = pricesByDate.get(monthYear);
return price != null ? price : 0.0;
}
}
因此,不要担心在任何地方填写0,只需使对象足够聪明,在没有找到数据时报告0。
现在更改解析器以构建游戏列表。