哪个是在java中存储重复值的最佳数据结构?从中检索价值是多么容易!?
感谢 编辑#1 我正在读取1000个文件中的内容,我想将每个文件内容作为标记放在某些数据结构中。我使用了Hashtable,但是当我这样做时,我无法查看很多单词。这就是为什么我想要一个可以存储重复值的数据结构。
答案 0 :(得分:2)
对于仅存储简单值,您应该使用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());
}
}
在此片段的末尾,data
将填充每个文件中的字词列表。
答案 1 :(得分:0)
缺乏正确回答此问题的信息..但无论如何,哈希映射可以解决问题。值的检索可以在平均的恒定时间内完成。
答案 2 :(得分:0)
您应该使用List<E>
,但应该实施int[] getDuplicateValuesIndexes(String value)
方法和int getCount(String value)
。这些将非常有用,因为在List<E>
实现中,没有什么可以处理重复值,因为它们只存储任何类型的值。
答案 3 :(得分:0)
任何未实现Set接口的java.util.Collection。可能你会想要一些实现List的东西。
答案 4 :(得分:0)
使用数组来获取价值使用指数(我知道其答案不完整,但问题也是如此)