Думал дело в порядке вывода, ан нет
package com.javarush.task.task19.task1918;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
String str = fileReader.lines().collect(Collectors.joining());
fileReader.close();
parse(str, args[0]);
}
public static void parse(String line, String tag) {
List<String> list = new ArrayList<>();
Stack<Integer> stack = new Stack<>();
int index = 0;
while (true) {
index = line.indexOf(tag, index);
if (index == -1) {
break;
}
if (line.charAt(index - 1) == '<') {
stack.push(index);
} else if (line.charAt(index - 1) == '/') {
list.add(line.substring(stack.pop() - 1, index + tag.length() + 1));
}
index += tag.length();
}
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
};
Collections.sort(list, comparator);
for (String s : list) {
System.out.println(s);
}
}
}