这是在java中存储重复值的最佳数据结构?从它检索价值是多么容易!我应该在java中使用哪种数据结构来存储重复值?
谢谢 编辑#1我正在阅读1000个文件的内容,并且我想将每个文件内容作为标记放在某些数据结构中。我使用Hashtable,但当我这样做时,我无法查看许多单词。这就是为什么我想要一个可以存储重复值的数据结构。
这是在java中存储重复值的最佳数据结构?从它检索价值是多么容易!我应该在java中使用哪种数据结构来存储重复值?
谢谢 编辑#1我正在阅读1000个文件的内容,并且我想将每个文件内容作为标记放在某些数据结构中。我使用Hashtable,但当我这样做时,我无法查看许多单词。这就是为什么我想要一个可以存储重复值的数据结构。
只需存储简单值,就应该使用List<E>
接口的实现。
要从List<E>
你可以做以下获取数据:
list.get(index); // will get data at a given index
// or you can iterate over all of the items in the list
for(E item: list) {
// use E
}
根据你使用任何一个ArrayList<E>
或LinkedList<E>
会做你的需要。
另一种选择是Map<K, V>
(它的实现HashMap
)。这将允许您在唯一键下保存重复的值。
你可以得到的值从以下几方面一Map<K,V>
的:
map.get(someKey); // will retrieve the value associated with a key
// or you can iterate through all of the entries in a map like so:
for(Entry<K,V> entry: map.entrySet()){
// use entry
}
回答您的编辑:
您可能需要使用Map<String, List<String>>
,其中的关键是的名称文件,并且该值是文件中单词的列表。
您的代码可能是这样的:
Map<String, List<String>> data = new HashMap<String, List<String>>();
for(File f: files) {
List<String> words = new ArrayList<String();
data.put(f.getName(), words);
Scanner s = new Scanner(f);
while(s.hasNext()) {
words.add(s.next());
}
}
在这个snipit结束,data
将与每个文件中的单词列表来填补。
您应该使用List<E>
但您应该实施int[] getDuplicateValuesIndexes(String value)
方法和int getCount(String value)
。这些将会很有用,因为在List<E>
实现中,没有什么可以处理重复值,因为它们只存储任何类型的值。
任何没有实现Set接口的java.util.Collection。可能你会想要实现List的东西。
使用数组获得价值使用指数(我知道它的不完整答案,但问题也是如此)
你是什么意思的“重复值?”什么数据被存储?您需要对这些值执行哪些操作?没有更多的信息,这是无法回答的。 – syrion 2010-12-14 15:42:40
你需要重复的值还是重复的参考?换句话说,您是否有多个包含相同内容的对象,或者您是否需要对同一对象进行多次引用? – 2010-12-14 15:55:17
有什么内容?号码?你希望以后如何访问这些内容? – 2010-12-14 19:27:08