Java:从数组列表中获取动态信息以进行决策

时间:2017-01-31 01:25:40

标签: java arraylist

所以我有一个文本输入文件,如下所示:

011,AgeOfEmpires,RTS,156
022,Oblivion,RPG,88
033,CallOfDuty,FPS,2
044,Halo,FPS,1

(格式为ID,名称,类型,已售出的副本)

使用扫描仪读取信息并将其放入数组列表中。代码在这里:

File temp = new File("file.txt");
        Scanner file = new Scanner(temp);

        List<Game> games = new ArrayList<Game>();

    while(file.hasNextLine())
    {
      String data = file.nextLine();
      String[] details = data.split(",");
      String number = details[0];
      String name = details[1];
      String genre = details[2];
      int price = Integer.parseInt(details[3]);
      Game g = new Game(number, name, genre, price);
      games.add(g);
    }

(另请注意,在我的程序中,我有一个带有getter和setter的类,可以获取数组中的信息)

问题是我不知道如何比较某些决定的数据。

例如,如果一个类型的销售量超过100份,该程序将发出消息。我的直觉说我会编写这样的东西:

If (soldRTS > 100) System.out.println("RTS games are popular lately");

然而,这不起作用,因为类型的价值将是“动态的”或“可变的”(不确定如何调用它)。也就是说,输入文件的作者可以具有任何类型的类型,并且他们的所有销售都将是不同的。

我不知何故需要“动态”处理数组列表中的信息以进行这些决策。我知道必须有一些方法来做到这一点,但我真的无法找到如何。我知道它必须在某个地方在线,但由于我不知道这个过程甚至被称为什么我在搜索它时遇到了麻烦。有人可以解释一下这是怎么做的,或者至少指出我正确的方向?

非常感谢,如果您需要更多代码,我可以编辑这篇文章。我认为所需的一切都已包括在内。

1 个答案:

答案 0 :(得分:0)

总结一下,你的问题是你需要一种方法,对于任何给定的任意类型,跟踪计数,如果你事先知道类型,你只知道如何做到这一点。试试Map。更具体地说,是Map<String, Integer>。在大多数情况下,使用Map所需的实现类可能是HashMap

此地图中的键将是流派,而值将是该流派的总销售额。对于每个游戏,首先检查地图containsKey()是否类型;如果是,get()到目前为止,添加当前游戏的销售额,并将put()新值重新加入;如果它没有,只需put()当前游戏的销售数量,因为它是该类型的第一个。

当您为所有游戏完成此操作后,您可以使用地图entrySet()浏览所有类型的整个列表及其销售数量。