last question is how to sort hashmap by integer key
package com.codegym.task.task19.task1918;
/*
Introducing tags
*/
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
import java.util.TreeMap;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = bufferedReader.readLine();
bufferedReader.close();
String tag = "";
if (args.length > 0)
tag = args[0];
//String tag = "span";
//String file = "C:\\Users\\Wei\\Desktop\\input.txt";
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader(fileName));
while(br.ready())
sb.append(br.readLine());
br.close();
String line = sb.toString();
String openTag = "<" + tag;
String closeTag = "</" + tag + ">";
String openIcon = "开";
String closeIcon= "关";
line = line.replaceAll(openTag, openIcon)
.replace(closeTag, closeIcon)
.substring(line.indexOf(openTag));
Stack<Integer> stack = new Stack<>();
HashMap<Integer, String> lineMap = new HashMap<>();
int count = 0;
String[] arr = line.split("");
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(openIcon)) {
stack.push(i);
}
if (arr[i].equals(closeIcon)) {
int currentPosition = stack.pop();
lineMap.put(currentPosition,line.substring(currentPosition, i+1));
}
}
TreeMap sortedMap = new TreeMap();
sortedMap.putAll(lineMap);
String newLine;
for(Map.Entry<Integer, String> pair : lineMap.entrySet()) {
newLine = pair.getValue().replace(openIcon,openTag).replace(closeIcon, closeTag);
System.out.println(pair.getKey() + "---" + newLine);
}
}
}