У меня большие текстовые файлы, я хотел бы пройтись по столбцам, выполняя некоторые сравнения предыдущего и следующего значения, а затем сохранить связанные с ними заголовки столбцов в списке для последующего использования. Пожалуйста, дайте мне несколько советов о том, как эффективно решить эту проблему. Ниже то, что сделано до сих пор, не может пройти мимо попытки использовать «для циклов»! Спасибо.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Projections {
public static void main(String[] args) {
String fileName= "study_panel.csv";
File file= new File(fileName);
// 2-dimensional list of strings
List<List<String>> lines = new ArrayList<>();
Scanner inputStream;
try{
inputStream = new Scanner(file);
while(inputStream.hasNext()){
String line= inputStream.next();
String[] values = line.split(",");
// Adds the currently parsed line to the 2-dimensional string list
lines.add(Arrays.asList(values));
}
//Compare specific elements in the list
String svalue = lines.get(3).get(1);
String svalue2 = lines.get(3).get(2);
if(svalue.equals(svalue2)){
System.out.println("No recombination");
//store column`s header in list
}
else{
System.out.println("Recombination");
//store column`s header in list
}
inputStream.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}
// Iterate through the 2-dimensional data and store column headers
int lineNo = 0;
for(List<String> line: lines) {
int columnNo = 0;
String previousValue=None;
String newValue;
for (String value: line) {
//Compare column elements in the 2-dimensional data
if(previousValue.equals(newValue)){
System.out.println("No recombination");
//store column`s header in list
}
else{
System.out.println("Recombination");
//store column`s header in list
}
// System.out.println("Individual " + lineNo + " Site " + columnNo + ": " + value);
columnNo++;
}
lineNo++;
}
}
}
1. Образец данных исследования
ID,S1_577905,S1_1066894,S1_1293038,S1_1491834
ind1,A,A,A,A
ind2,B,B,B,B
ind3,B,B,A,A
ind4,B,A,B,B
ind5,A,A,H,A
ind6,A,-,B,B
ind7,A,B,A,H
Пример справочных данных
ID,S1_570493,S1_592115,S1_604416,S1_614892,S1_618220,S1_636801,S1_654822,S1_655362,S1_723787,S1_723892,S1_858753,S1_867194,S1_923829,S1_925667,S1_1009779,S1_1009843,S1_1010052,S1_1010123,S1_1010298,S1_1010403,S1_1029733,S1_1039046,S1_1040024,S1_1044174,S1_1044355,S1_1049540,S1_1049657,S1_1050097,S1_1050995,S1_1126726,S1_1166956,S1_1177001,S1_1185437,S1_1188610,S1_1191450,S1_1195593,S1_1195669,S1_1195782,S1_1197394,S1_1207757,S1_1207893,S1_1211271,S1_1211343,S1_1223120,S1_1223377,S1_1237046,S1_1251020,S1_1280051,S1_1280124,S1_1284151,S1_1308043,S1_1340776,S1_1341385,S1_1363675,S1_1363753,S1_1407704,S1_1410354,S1_1431655,S1_1433696,S1_1490941,S1_1507081
A,T,T,A,C,C,T,T,T,G,G,A,A,A,A,G,G,T,G,C,G,C,T,G,C,T,A,G,C,C,C,T,T,A,C,A,G,G,A,G,C,G,T,A,C,C,A,G,A,G,C,C,A,T,T,C,A,T,T,A,G,G
B,C,G,T,A,T,C,C,A,C,A,C,C,C,G,T,A,C,C,T,A,G,A,T,T,G,G,A,A,T,T,C,C,C,T,G,A,A,C,T,T,A,C,T,A,G,T,A,G,A,T,T,G,C,A,T,G,C,C,C,A,T
Пример ожидаемых результатов
ID,S1_570493,S1_592115,S1_604416,S1_614892,S1_618220,S1_636801,S1_654822,S1_655362,S1_723787,S1_723892,S1_858753,S1_867194,S1_923829,S1_925667,S1_1009779,S1_1009843,S1_1010052,S1_1010123,S1_1010298,S1_1010403,S1_1029733,S1_1039046,S1_1040024,S1_1044174,S1_1044355,S1_1049540,S1_1049657,S1_1050097,S1_1050995,S1_1126726,S1_1166956,S1_1177001,S1_1185437,S1_1188610,S1_1191450,S1_1195593,S1_1195669,S1_1195782,S1_1197394,S1_1207757,S1_1207893,S1_1211271,S1_1211343,S1_1223120,S1_1223377,S1_1237046,S1_1251020,S1_1280051,S1_1280124,S1_1284151,S1_1308043,S1_1340776,S1_1341385,S1_1363675,S1_1363753,S1_1407704,S1_1410354,S1_1431655,S1_1433696,S1_1490941,S1_1507081
ind1,T,T,A,C,C,T,T,T,G,G,A,A,A,A,G,G,T,G,C,G,C,T,G,C,T,A,G,C,C,C,T,T,A,C,A,G,G,A,G,C,G,T,A,C,C,A,G,A,G,C,C,A,T,T,C,A,T,T,A,G,G
ind2,C,G,T,A,T,C,C,A,C,A,C,C,C,G,T,A,C,C,T,A,G,A,T,T,G,G,A,A,T,T,C,C,C,T,G,A,A,C,T,T,A,C,T,A,G,T,A,G,A,T,T,G,C,A,T,G,C,C,C,A,T
ind3,C,G,T,A,T,C,C,A,C,A,C,C,C,G,T,A,C,C,T,A,G,A,T,T,G,G,A,A,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,C,C,A,T,T,C,A,T,T,A,G,G
ind4,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,C,C,A,T,T,C,A,T,T,A,G,G
ind5,T,T,A,C,C,T,T,T,G,G,A,A,A,A,G,G,T,G,C,G,C,T,G,C,T,A,G,C,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
ind6,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,T,T,G,C,A,T,G,C,C,C,A,T
ind7,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-