我有一些 Java 代码可以按预期的方式运行,但它需要一些时间——几秒钟——即使工作只是循环遍历一个数组。
输入文件是一个 Fasta 文件,如下图所示。我使用的文件是 2.9Mo,还有一些其他的 Fasta 文件最多可以占用 20Mo。
在代码中,我试图通过三组循环遍历它,例如:AGC TTT TCA ... 等 该代码目前没有功能感知,但我想要将每个氨基酸附加到它的等效碱基束。例子 :
AGC - Ser / CUG Leu / ...等
那么代码有什么问题?有什么办法可以做得更好吗?有什么优化吗?遍历整个 String 需要一些时间,可能只需几秒钟,但需要找到更好的方法来做到这一点。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class fasta {
public static void main(String[] args) throws IOException {
File fastaFile;
FileReader fastaReader;
BufferedReader fastaBuffer = null;
StringBuilder fastaString = new StringBuilder();
try {
fastaFile = new File("res/NC_017108.fna");
fastaReader = new FileReader(fastaFile);
fastaBuffer = new BufferedReader(fastaReader);
String fastaDescription = fastaBuffer.readLine();
String line = fastaBuffer.readLine();
while (line != null) {
fastaString.append(line);
line = fastaBuffer.readLine();
}
System.out.println(fastaDescription);
System.out.println();
String currentFastaAcid;
for (int i = 0; i < fastaString.length(); i+=3) {
currentFastaAcid = fastaString.toString().substring(i, i + 3);
System.out.println(currentFastaAcid);
}
} catch (NullPointerException e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
fastaBuffer.close();
}
}
}