2014-10-09 119 views
0

我到處尋找可能的解決方案,但我找不到任何東西並卡住了。合併兩個數據集java

問題:

我有一個包含數據的兩個文件,當我看到他們爲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 

因此,他們不必有相同的標題列。 我想要做的就是將這兩個數組合併到一個文件中,其中共享標題在彼此之下堆疊,並且不共享標題被添加,而是用空值填充另一個文件。

Shared header not shared header 
a    a 
a    a 
a    a 
a    a 
b    null 
b    null 
b    null 

最後,所有東西都應該寫入一個被稱爲組合的文件。

有沒有人有一個想法可以使用什麼類來做到這一點?是否已有可以處理這種合併的類?

+0

可能重複:http://stackoverflow.com/questions/8795945/merging-two-maps – 2014-10-09 14:03:10

+0

@guido看起來更像他的要求用來做什麼合併,而不是如何合併。 – RockOnRockOut 2014-10-09 14:23:22

+1

@ChrOertlin我不明白你對標題欄的看法。這些2D陣列? – RockOnRockOut 2014-10-09 14:24:42

回答

0

您可以使用Collection < Map < String,String >>用於存儲數據而不是數組。在這種情況下,你的任務將平凡解決:

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