我到处寻找可能的解决方案,但我找不到任何东西而且卡住了。
问题:
我有两个包含数据的文件,当我将它们读入Java时,我将它们存储在两个独立的数组中。这些数组如下所示:(它们由先前指定的分隔符分隔)
[ID pval logFC ... ... ...,
S145 0.02 2 ... ... ...,
S252 0.01 4 ... ... ...,
... ... ... ... ... ...]
[ID pval logFC ... ... ...,
S145 0.02 2 ... ... ...,
S252 0.01 4 ... ... ...,
... ... ... ... ... ...]
... <--- can be anything
因此,他们不必具有相同的标题列。 我想要做的是将这两个数组合并到一个文件中,其中共享标头堆叠在一起,并且不添加共享标头,而是使用null填充另一个标头。
Shared header not shared header
a a
a a
a a
a a
b null
b null
b null
最后,所有内容都应该写入一个名为combined的文件。
有谁知道可以使用哪些类来执行此操作?是否已存在可以处理此类合并的类?
答案 0 :(得分:0)
您可以使用Collection&lt; Map&lt; String,String&gt;&gt;用于存储数据而不是数组。在这种情况下,您的任务将得到简单的解决:
Collection<Map<String, String>> data1 = loadData("source1.dat");
Collection<Map<String, String>> data2 = loadData("source2.dat");
Collection<Map<String, String>> merged = new ArrayList<>();
merged.addAll(data1);
merged.addAll(data2);
Set<String> headers = new LinkedHashSet<>();
for (Map<String, String> map : merged) {
headers.addAll(map.keySet());
}