【发布时间】:2018-06-02 21:47:52
【问题描述】:
我正在尝试在 Java 中创建一个文件列表,其中每个文件都有一个 ID,我使用的是 HashMap,然后将 ArrayList 中的文件替换为 HashMap 中的文件,如下所示:
ArrayList<Object> tab = new ArrayList<>();
tab.addAll(Arrays.asList(par));//par contains files among objects
File file = null;
HashMap<Integer, File> hm = new HashMap<>();
//loop start browsing tab for files
file = new File(dir + fileName);
hm.put(i, file);
//loop end
for (Map.Entry<Integer, File> entry : hm.entrySet()) {
tab.remove(entry.getKey());
tab.add(entry.getKey(), entry.getValue());
}
问题是它并没有取代它,只是添加它们而不是添加对象。如何以正确的方式做到这一点?
【问题讨论】:
-
你想在这里实现什么?如果
tab最初不只保存File对象,那么使用您创建的用于存储文件的HashMap不是更清楚吗?这也将允许通过 id 轻松有效地访问文件。 -
@Mick 但是 ID 似乎是列表的索引,因此 Map 没有任何好处
-
是的,目前看来是这样。但是出于某种原因,OP 决定省略代码的相关部分,因此很难说最好的解决方案是什么。必须了解原始的
tab数据结构以及为什么需要这种杂耍。
标签: java file arraylist replace hashmap