Java-集合选择
我可以使用哪个泛型集合类来提供映射和类似数组的功能。例如,我想将一个字符串映射到一个Double,并且我想使用键作为索引引用该值Java-集合选择,java,collections,Java,Collections,我可以使用哪个泛型集合类来提供映射和类似数组的功能。例如,我想将一个字符串映射到一个Double,并且我想使用键作为索引引用该值 collection[key] = collection[key] + double 谷歌收藏库提供了这样的功能吗 谢谢。HashMap应该满足您的目的: HashMap应该满足您的目的: 我使用java.util.HashMap作为键值对,除非性能是一个问题,而这几乎总是不成问题。我使用java.util.HashMap作为键值对,除非性能是一个问题,而这几乎总是
collection[key] = collection[key] + double
谷歌收藏库提供了这样的功能吗
谢谢。HashMap应该满足您的目的:
HashMap应该满足您的目的:
我使用java.util.HashMap作为键值对,除非性能是一个问题,而这几乎总是不成问题。我使用java.util.HashMap作为键值对,除非性能是一个问题,而这几乎总是不成问题。您必须在这里选择:-)您的键是一个字符串:
Map<String, Double> myMap = new HashMap<String, Double>();
myMap.put("key1", 5.0); // caution - auto-wrap
myMap.put("key1", myMap.get("key1") + 5.0); // caution - auto-wrap
您必须在这里选择:-)您的键可以是字符串:
Map<String, Double> myMap = new HashMap<String, Double>();
myMap.put("key1", 5.0); // caution - auto-wrap
myMap.put("key1", myMap.get("key1") + 5.0); // caution - auto-wrap
我看不出您的示例如何使用类似数组的功能。你的意思是重载数组索引操作符吗?如果是这样,您应该知道Java不允许运算符重载
如果您确实需要数组操作,LinkedHashMap允许您进行键值查找,以及跟踪值内的顺序。这对于构建LRU缓存非常有用 我不知道您的示例如何使用类似数组的功能。你的意思是重载数组索引操作符吗?如果是这样,您应该知道Java不允许运算符重载
如果您确实需要数组操作,LinkedHashMap允许您进行键值查找,以及跟踪值内的顺序。这对于构建LRU缓存非常有用 Java不允许在集合中使用括号语法,但可以执行以下操作:
HashMap<String, Double> collection = new HashMap<String, Double>();
String key = "some key";
...
if( collection.containsKey(key) )
{
// increment the value
collection.put( key, collection.get( key ) + 1.0 );
}
else
{
// initialize the value
collection.put( key, 0.0 );
}
HashMap集合=新建HashMap();
String key=“some key”;
...
if(集合容器(键))
{
//增值
collection.put(key,collection.get(key)+1.0);
}
其他的
{
//初始化值
集合。放置(键,0.0);
}
Java不允许在集合中使用括号语法,但可以执行以下操作:
HashMap<String, Double> collection = new HashMap<String, Double>();
String key = "some key";
...
if( collection.containsKey(key) )
{
// increment the value
collection.put( key, collection.get( key ) + 1.0 );
}
else
{
// initialize the value
collection.put( key, 0.0 );
}
HashMap集合=新建HashMap();
String key=“some key”;
...
if(集合容器(键))
{
//增值
collection.put(key,collection.get(key)+1.0);
}
其他的
{
//初始化值
集合。放置(键,0.0);
}
是的,不久前我想做同样的事情,我想在数据结构中表示一个数据库表,其中有一个主键“lookup”列。HashMap本身不会这样做(据我所知)
我想我所做的是创建自己的数据结构类,它包含由索引值映射的多个数组。我想我可以创建一个RowData类,并将每个RowData存储在HashMap中。嗯
其他人可能比我解释得更好。我只是一个初学者。是的,我不久前也想做同样的事情,我想在数据结构中表示一个数据库表,其中有一个主键“lookup”列。HashMap本身不会这样做(据我所知) 我想我所做的是创建自己的数据结构类,它包含由索引值映射的多个数组。我想我可以创建一个RowData类,并将每个RowData存储在HashMap中。嗯
其他人可能会比我解释得更好。我只是一个初学者。我能看到的最接近的是,它为您提供了可预测的元素顺序,但这并不能让您快速查找给定的索引(这有点像LinkedList)。它并没有给你一个特定的方法来通过一个特定的索引进行查找,你必须添加你自己的索引。我能看到的最接近的方法是,它提供了元素的可预测顺序,但这并没有给你一个给定索引的快速查找(这有点像LinkedList)。它没有给你一个特定的方法来通过特定的索引查找,你必须添加你自己的方法。你指的是类似数组的功能还是类似数组的语法。Java不允许集合使用类似数组的语法,但所有集合都具有某种形式的类似数组的功能 如果您的意思是希望存储对(键/值),并能够使用索引(就像数组一样)访问它们,那么就有一个“LinkedHashMap”集合,上面有您的名字
如果您的意思是希望在两个方向上建立索引(集合的任意一侧都可以是键),那么您可能希望创建自己的集合,其中包含两个哈希映射,并且每次将对象添加到集合中时,您都会将其添加到两个映射中。您的意思是类似数组的功能还是类似数组的语法。Java不允许集合使用类似数组的语法,但所有集合都具有某种形式的类似数组的功能 如果您的意思是希望存储对(键/值),并能够使用索引(就像数组一样)访问它们,那么就有一个“LinkedHashMap”集合,上面有您的名字
如果您的意思是希望在两个方向上建立索引(集合的任意一侧都可以是键),那么您可能希望创建自己的集合,其中包含两个哈希映射,并且每次将对象添加到集合中时,您都会将其添加到两个映射中。Google Collections有一个Multiset,它将每个键与一个整数关联
Google Collections有一个Multiset,它将每个键与一个整数相关联
我当时处于c#模式。数组索引运算符正是我所想的。我当时处于c#模式。数组索引运算符正是我所想的。HashMap是直接查找时遇到的性能最好的东西。添加速度可能比链表稍慢。除非内存严重受限,否则在任何查找情况下,除了数组或ArrayList中的索引外,在性能上都无法与哈希相比。HashMap是直接查找时遇到的性能最高的东西。