微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建arraylist哈希表的最佳方法

如何解决创建arraylist哈希表的最佳方法

您无需将ArrayList重新添加回您的Map。如果ArrayList已经存在,则只需向其中添加值即可。

改进的实现可能看起来像:

Map<String, Collection<String>> map = new HashMap<String, Collection<String>>();

在处理每一行时:

String user = user field from line
String value = value field from line

Collection<String> values = map.get(user);
if (values==null) {
    values = new ArrayList<String>();
    map.put(user, values)
}
values.add(value);

年 -我在2009年对Google Guava的了解有限时就写了原始答案。考虑到Google Guava的所有功能,我现在建议使用它Multimap而不是重新发明它。

Multimap<String, String> values = HashMultimap.create();
values.put("user1", "value1");
values.put("user2", "value2");
values.put("user3", "value3");
values.put("user1", "value4");

System.out.println(values.get("user1"));
System.out.println(values.get("user2"));
System.out.println(values.get("user3"));

输出

[value4, value1]
[value2]
[value3]

解决方法

我有一百万行.txt格式的数据。格式很简单。对于每一行:

用户1,值1
user2,value2
user3,value3
用户1,值4
...

你知道我的意思。对于每个用户,它可能出现很多次,或者只出现一次(您永远不会知道)。我需要找出每个用户的所有值。因为用户可能会随机出现,所以我使用了Hashmap来做到这一点。即:HashMap(键:字符串,值:ArrayList)。但是要向arrayList添加数据,我必须不断使用HashMap
get(key)来获取arrayList,为其添加值,然后将其放回HashMap。我觉得效率不是很高。有人知道更好的方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。