[英]Read Tab Delimited file into ArrayList<ArrayList> in Java
[英]Sorting tab delimited file based on column in java
我有一個巨大的(大約4GB)文本文件需要排序。 它是如此之大,以至於它有6000個列和數千行。 使用bash腳本進行排序非常容易。 但是,我需要跨平台的Java程序來對文件進行排序。 我使用了 ,但是得到的結果文件與排序的輸出文件相同。
輸入文件中要排序的部分
SNP_ID Sub_0001 Sub_0002 Sub_0003 Sub_0004 ...
cnv3p502 0 0 0 0
rs3115860 1 0 1 1
rs3131967 1 0 1 1
rs3115850 1 0 1 1
rs12124819 0 0 0 0
rs2519031 1 0 1 1
.
.
.
我需要相對於Java中的第一列對該制表符分隔的文件進行排序,而無需使用執行unix命令的系統命令。 我將感謝您的幫助。
就像Dhruv的評論所說,一種可能的方法是使用外部排序。
您要做的是創建一個封裝文件每一行的對象,並創建一個自定義比較器,該比較器將根據所需條件進行排序。 請記住,您不需要將行上的每一列都映射到Object屬性,只需擁有一個包含每行第一列作為比較屬性的屬性,以及另一個包含整個String的屬性。
逐行將文件的一部分加載到所述Object類型的Collection中。 使用自定義比較器對其進行排序。 將集合寫入一個臨時文件。 重復直到原始文件的末尾。
您最終將得到幾個較小的文件,這些文件將按自己排序。 現在,您可以使用外部排序的“合並”步驟來創建一個包含所有已排序行的新文件。 讀取每個文件的第一行,將其中最小的一行寫入已排序的文件,然后從文件中讀取最小的一行開始。 重復直到所有臨時文件都為空。
做完了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.