JAVA-使用字符串

时间:2018-08-01 13:23:54

标签: java hashmap

我是JAVA的初学者。我想将sessionmax-age的值存储在hashmap中,并且作为响应,我正在接收这种类型的字符串。我怎么能做到这一点。

session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly

预先感谢

3 个答案:

答案 0 :(得分:0)

可以使用类似以下的基本方法:

   {
            HashMap<String, String> resultMap = new HashMap<>();
            String data = "session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly";
            String[] dataArr = data.split("; ");
            String session = null;
            String maxAge = null;
            for (String part : dataArr) {
                if (part.startsWith("session")) {
                    session = part.split("=")[1];
                }
                if (part.startsWith("max-age")) {
                    maxAge = part.split("=")[1];
                }
            }

            if (session != null && maxAge != null) {
                resultMap.put(session, maxAge);
            }
        }

答案 1 :(得分:0)

使用以下代码

        String str="session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly";
        String array[]=str.split("\\;");
        Map<String,String> map=new HashMap<>();
        for(String s:array){
            String ss[]=s.split("\\=");
            if(ss.length==2)
                map.put(ss[0].trim(), ss[1].trim());

        }
        for(Map.Entry<String, String> m:map.entrySet()){
            System.out.println(m.getKey()+"/"+m.getValue());
        }

答案 2 :(得分:0)

如果您使用的是Java 8+,则可以轻松使用:

String input = "session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly";
Map<String, String> result = Arrays.asList(input.split(";\\s*")).stream()
        .filter(s -> s.contains("session") || s.contains("max-age"))
        .map(s -> s.split("="))
        .collect(Collectors.toMap(s -> s[0], s -> s[1]));

输出

session=e6cb242ea51874c73d0f323dfgdf5455e4c
max-age=43200

编辑

  

...我正在获取标头字段为List<String> List<String> cookies = connection.getHeaderFields().get("Set-Cookie");

在这种情况下,您可以改用flatMap:

List<String> cookies = ...;//Some data
Map<String, String> result = cookies.stream()
        .flatMap(c -> Arrays.stream(c.split(";\\s*")))
        .filter(s -> s.contains("session") || s.contains("max-age"))
        .map(s -> s.split("="))
        .collect(Collectors.toMap(s -> s[0], s -> s[1]));