将姓氏分配到现金存款清单

时间:2016-03-16 13:46:41

标签: java data-structures

我在Java工作,我有txt文件,其中包含近70万行,看起来像这样:

Kowalski
1500
Kowalski
1200
Smith
3200
Black
2200
Kowalski
1100
...

我需要任何数据结构,它将姓氏分配给现金存款清单。

[Kowalski] => [1500, 1200, 1100, ...]
[Smith] => [3200, ...]
[Black] => [2200, ...]

我不想重新发明轮子,是否有Java提供的数据结构?

1 个答案:

答案 0 :(得分:3)

您可以使用Map<String,List<Integer>>

Map<String, List<Integer>> map = new HashMap<>();
Scanner sc = new Scanner(new File("myfile.txt"));
while(sc.hasNextLine()) {
    String name = sc.nextLine();
    int deposit = Integer.parseInt(sc.nextLine());
    List<Integer> deposits = map.get(name);
    if(deposits == null) {
        deposits = new ArrayList<>();
        map.put(name, deposits);
    }
    deposits.add(deposit);
}