У меня есть файл fasta, который я хочу разобрать на ArrayList
, где каждая позиция имеет целую последовательность. Последовательности представляют собой многострочные строки, и я не хочу включать строку идентификации в сохраняемую строку.
Мой текущий код разбивает каждую строку на другую позицию в ArrayList
. Как сделать так, чтобы каждая позиция обозначалась символом >
?
Файлы fasta имеют вид:
>identification of a sequence 1
line1
line3
>identification of a sequence 2
line4
>identification of a sequence 3
line5
line6
line7
public static void main(String args[]) {
String fileName = "fastafile.fasta";
List<String> list = new ArrayList<>();
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
//1. filter line 3
//2. convert all content to upper case
//3. convert it into a List
list = stream
.filter(line -> !line.startsWith(">"))
.map(String::toUpperCase)
.collect(Collectors.toList());
} catch (IOException e) {
e.printStackTrace();
}
list.forEach(System.out::println);
}
Для приведенного выше примера нам нужен такой вывод, что:
System.out.println(list.size()); // this would be 3
System.out.println(list.get(0)); //this would be line1line3
System.out.println(list.get(1)); //this would be line4
System.out.println(list.get(2)); //this would be line5line6line7