我有一个场景,其中未知数量的线程将元素添加到服务器上的集合中。此集合中的数据不必排序,也不会被迭代。这个集合只需要两个简单的操作:
- 添加元素(在某些情况下删除旧元素)
- 从集合中读取所有元素(不是一个一个,而是整个集合,以便对其进行序列化并将其发送给客户端。当然,这些元素也可以移动到另一个集合,然后再进行序列化。)
哪个集合最适合这个用例?我会选择ConcurrentHashMap,但不知道这个选择好不好。
编辑:我忘记了一个重要的要求:如果某个类型的元素已经在这个集合中并且添加了另一个相同类型的元素,那么在添加新元素之前应该删除旧元素。对于这个要求,我想使用哈希值来避免搜索。存储的对象很简单:它们包含唯一的用户名和一些字符串和整数。对象的用户名应该用作键。