Welcome to the Ranch
I presume you want your Reader to stop when it encounters the first 0‑length line, even though there are more lines in the file.
Why are you using a FileInputStream rather than a FileReader for a text file?
I would suggest you are going about writing code the wrong way if you write a whole block of code like that. Break it into smaller tasks. I suspect you may be able to refactor that block into three methods, one to read the file, one to add to the Map, and one to add to the List. Remember that code which reads text files like that is brittle; it is very tightly coupled to the format of the text file.
I would suggest the first thing to do is to write code which reads each line and simply prints it to the command line. This will verify that you are reading the file correctly.
Then you can add the splitting code. Then write code to add each line to a List. Then add code to add each line to the Map. You do not have to do all these things in that particular order.
The reason you have put the contents of the first column into the Map as its “K” is that you told the code to use the first column. You used index [0].
I think you are being slack in what you wrote. You said you are delimiting the file with a tab space. I don't think there is any such thing. Do you mean a tab which is one character, or do you mean tab‑space which is two characters?
You are also splitting the
String and adding it back together. Why? You know you can give the split method a parameter which is the maximum size of the array to split into. It will stop splitting when it reaches that number. Are you simply doing this to remove tab characters? Have you considered the replacing methods of the String class? Or a StringBuilder where you can iterate it and remove any tab characters?