【发布时间】:2011-06-14 03:46:16
【问题描述】:
有没有一个好的类可以统计java中特定字符串的出现次数?我想保留一份姓名列表,然后为每个姓名创建唯一的电子邮件地址。对于每次出现的姓氏,我想将关联的数字加一。
例如:如果我有 3 个姓 Smith 的人,我希望他们的地址是 smith1@(地址)、smith2@(地址)和 smith3@(地址)。我看到了一个“地图”类,但我似乎无法正确初始化它。有没有可以用来保存字符串列表及其出现的类?
【问题讨论】:
有没有一个好的类可以统计java中特定字符串的出现次数?我想保留一份姓名列表,然后为每个姓名创建唯一的电子邮件地址。对于每次出现的姓氏,我想将关联的数字加一。
例如:如果我有 3 个姓 Smith 的人,我希望他们的地址是 smith1@(地址)、smith2@(地址)和 smith3@(地址)。我看到了一个“地图”类,但我似乎无法正确初始化它。有没有可以用来保存字符串列表及其出现的类?
【问题讨论】:
Map 将是一个可行的数据结构,如果您只是想计算具有给定姓氏的电子邮件的数量。键是字符串(姓氏),值是整数(出现次数)。
您将其实例化如下:
Map<String, Integer> nameOccurrences = new HashMap<String, Integer>();
向地图添加值:
nameOccurrences.put("Smith", 1);
检查名字是否在地图中:
if (nameOccurrences.containsKey("Smith")) { ... }
从地图中获取值:
Integer occurrences = nameOccurrences.get("Smith");
请注意,不同大小写的名称将被视为不同的键。如果您需要忽略大小写,则必须先将键全部设为大写,然后再将它们添加到 Map。
【讨论】:
Bag 是您要查找的数据结构。 Multiset 是来自 google-guava 库的 Bag 实现。
【讨论】: