Data structures 无内部迭代的三项HashMap
实现三项hashMap的最佳方法是什么? 例如,我想使用常规字符串键,但要将其映射到两个不同的对象。这个想法就像拥有一个列表列表,只是第一项是一个键 我试图避免遍历列表(因此该行为类似于hashmap)。你同意唯一的方法是建立一个新的类吗?“HashMap3”对象(带有get1(key)和get2(key)方法)似乎很有用。我不知道如何设置这个自己Data structures 无内部迭代的三项HashMap,data-structures,collections,hashtable,hashmap,Data Structures,Collections,Hashtable,Hashmap,实现三项hashMap的最佳方法是什么? 例如,我想使用常规字符串键,但要将其映射到两个不同的对象。这个想法就像拥有一个列表列表,只是第一项是一个键 我试图避免遍历列表(因此该行为类似于hashmap)。你同意唯一的方法是建立一个新的类吗?“HashMap3”对象(带有get1(key)和get2(key)方法)似乎很有用。我不知道如何设置这个自己 如何创建集合?如果密钥始终映射到正好两个对象,那么最简单的方法是创建一个仅存在用于保存这两个对象的对类。然后使用字符串作为键,使用对实例作为值。但是
如何创建集合?如果密钥始终映射到正好两个对象,那么最简单的方法是创建一个仅存在用于保存这两个对象的
对
类。然后使用字符串作为键,使用对
实例作为值。但是,如果键可以映射到任意多个对象,那么最好的方法是将存储在映射中的值作为某种类型的集合。如果键始终映射到两个对象,然后,最简单的方法是创建一个只存在用于保存这两个对象的Pair
类。然后使用字符串作为键,使用对
实例作为值。但是,如果密钥可以映射到任意多个对象,那么我认为最好的方法是将map
中存储的值作为某种类型的集合
类似于地图的集合,但
它可以关联多个值
用一把钥匙。如果你调用put(K,
五) 两次,用同一把钥匙,但是
不同的值,多重映射
包含从键到两者的映射
价值观
看看谷歌收藏
类似于地图的集合,但
它可以关联多个值
用一把钥匙。如果你调用put(K,
五) 两次,用同一把钥匙,但是
不同的值,多重映射
包含从键到两者的映射
价值观
A maybe?A maybe?我同意Eddie的观点,只是有一个类似的问题,只是有很多值,而不是两个。我想要一个Java ConcurrentHashMap来保存从web服务获取的文档的缓存XML,并且我需要在XML旁边记录各种信息,以支持缓存的逐出策略(例如,最近使用最少、使用最少)
解决方案只是定义一个包含这些项的对象类。我在缓存类中使用了一个私有嵌套类,如下所示:
private static class CacheEntry
{
private String uri; // Key
private String fetched_xml; // The XML document (main value)
private long put_time;
private long expires_time;
private long size;
private long hits;
private long last_used_time;
}
private final Map<String, CacheEntry> cache;
[...]
cache = new ConcurrentHashMap<String, CacheEntry>(100, 0.75f, 3);
ConcurrentHashMap在URI上键入,如下所示:
private static class CacheEntry
{
private String uri; // Key
private String fetched_xml; // The XML document (main value)
private long put_time;
private long expires_time;
private long size;
private long hits;
private long last_used_time;
}
private final Map<String, CacheEntry> cache;
[...]
cache = new ConcurrentHashMap<String, CacheEntry>(100, 0.75f, 3);
编辑:如果您需要将一个键映射到Java中n个对象的列表,您可以将这些对象放入Java.util.collections.ArrayList中,并使用ArrayList作为映射值。我同意Eddie的观点,只是在许多值上遇到了类似的问题,而不是两个值。我想要一个Java ConcurrentHashMap来保存从web服务获取的文档的缓存XML,并且我需要在XML旁边记录各种信息,以支持缓存的逐出策略(例如,最近使用最少、使用最少)
解决方案只是定义一个包含这些项的对象类。我在缓存类中使用了一个私有嵌套类,如下所示:
private static class CacheEntry
{
private String uri; // Key
private String fetched_xml; // The XML document (main value)
private long put_time;
private long expires_time;
private long size;
private long hits;
private long last_used_time;
}
private final Map<String, CacheEntry> cache;
[...]
cache = new ConcurrentHashMap<String, CacheEntry>(100, 0.75f, 3);
ConcurrentHashMap在URI上键入,如下所示:
private static class CacheEntry
{
private String uri; // Key
private String fetched_xml; // The XML document (main value)
private long put_time;
private long expires_time;
private long size;
private long hits;
private long last_used_time;
}
private final Map<String, CacheEntry> cache;
[...]
cache = new ConcurrentHashMap<String, CacheEntry>(100, 0.75f, 3);
编辑:如果需要将键映射到Java中n个对象的列表,可以将这些对象放在Java.util.collections.ArrayList中,并使用ArrayList作为映射值。能否详细说明一下?这三项是什么?你是什么意思?存储3个条目的哈希映射?或者一个key1=>key2=>value散列映射?你是说一个带有复合键的散列映射吗?你能详细说明一下吗?这三项是什么?你是什么意思?存储3个条目的哈希映射?或者一个key1=>key2=>value散列图?你是说一个具有复合键的散列图吗?Google Multimap似乎返回一个集合,该集合仍然需要迭代。。。是你提到了ApacheFlat3Map吗?我想知道为什么这个建议被删除了。我确实发布了关于Flat3Map的文章,但后来意识到你想要一个键有两个值。Flat3Map是关于small(Size)的快速访问Google Multimap似乎返回了一个集合,它仍然需要迭代…是你提到了Apache Flat3Map吗?我想知道为什么这个建议被删除了。我确实发布了关于Flat3Map的文章,但后来意识到你想要一个键有两个值。Flat3Map是关于small的快速访问(sizeI不认为这比构建一个处理多个值的“collection”对象更简单。它似乎是一个“HashMap3”对象(使用get1(key)和get2(key)方法)会很有用。我自己不确定如何设置它。这比构建自己的集合对象要简单得多。集合接口很大,有许多可选方法。配对对象很简单。是的,使用新集合(HashMap2表示一个键有两个值)Pair类的用法大致相同。但是创建Pair对象很简单,创建新的集合类很复杂,特别是如果您希望它是线程安全的,并且实现所有可选方法的话。由于我自己似乎无法想出一个方法,我不得不同意。我认为hashMap(key,ArrayList)将非常简单,仍然可以扩展,并且如果插入顺序一致,则不需要迭代。这比艰难地创建新集合更简单。谢谢您的时间,Eddie。我认为这不会比构建一个处理多个值的“集合”对象更简单。它似乎是一个“HashMap3”对象(使用get1(key)和get2(key)方法)将非常有用。我自己不确定如何设置它。这将比构建自己的集合对象简单得多。集合接口很大,有很多