Java read txt file to hashmap, split by “:”

后端 未结 3 1085
粉色の甜心
粉色の甜心 2020-12-15 15:09

I have a txt file with the form:

Key:value
Key:value
Key:value
...

I want to put all the keys with their value in a hashMap that I\'ve crea

3条回答
  •  旧时难觅i
    2020-12-15 15:51

    One more JDK 1.8 implementation.

    I suggest using try-with-resources and forEach iterator with putIfAbsent() method to avoid java.lang.IllegalStateException: Duplicate key value if there are some duplicate values in the file.

    FileToHashMap.java

    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.stream.Stream;
    
    public class FileToHashMap {
        public static void main(String[] args) throws IOException {
            String delimiter = ":";
            Map map = new HashMap<>();
    
            try(Stream lines = Files.lines(Paths.get("in.txt"))){
                lines.filter(line -> line.contains(delimiter)).forEach(
                    line -> map.putIfAbsent(line.split(delimiter)[0], line.split(delimiter)[1])
                );
            }
    
            System.out.println(map);    
        }
    }
    

    in.txt

    Key1:value 1
    Key1:duplicate key
    Key2:value 2
    Key3:value 3
    

    The output is:

    {Key1=value 1, Key2=value 2, Key3=value 3}
    

提交回复
热议问题