合并两个数据集java

时间:2014-10-09 13:58:37

标签: java dataset

我到处寻找可能的解决方案,但我找不到任何东西而且卡住了。

问题:

我有两个包含数据的文件,当我将它们读入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的文件。

有谁知道可以使用哪些类来执行此操作?是否已存在可以处理此类合并的类?

1 个答案:

答案 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());
}