как выводить теги собирать подстроки в лист и в цикле выводить с новой строки?
package com.javarush.task.task19.task1918;
import java.io.*;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) {
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileReader in = new FileReader(reader.readLine())) {
String s = getString(in);
List<Integer> list = parsString(s, args);
int start = list.get(0);
int end = list.get(list.size() - 1);
System.out.println(s.substring(start, end));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private static String getString(FileReader in) throws IOException {
StringBuilder builder = new StringBuilder();
while (in.ready()) {
builder.append((char) in.read());
}
return builder.toString();
}
private static List<Integer> parsString(String s, String[] args) {
LinkedList<String> stack = new LinkedList<>();
Map<Integer, Character> map = new TreeMap<>();
String startTag = "<" + args[0];
String endTag = "</" + args[0] + ">";
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch == '<') {
StringBuilder builder = new StringBuilder();
int j = i;
char cur = s.charAt(j);
do {
cur = s.charAt(j);
builder.append(cur);
j++;
}while (cur != '>');
String str = builder.toString();
if (str.startsWith(startTag)) {
stack.addLast(str);
map.put(i, ch);
} else if (str.equals(endTag)) {
stack.removeLast();
map.put(j, cur);
}
i = j - 1;
}
}
return new ArrayList<>(map.keySet());
}
}