从Hashmap获取特定密钥

时间:2015-01-09 14:31:28

标签: java android

使用正则表达式":"拆分字符串。在拆分字符串并使用put()中的HashMap()方法映射字符串后,当我尝试获取特定的映射密钥时,它将从字符串中返回带有“:”的所有映射值。

这是我的代码:

   public class MyClass {

     private HashMap<String,String> map = null;
     private String newString;


    public MyClass(String newString) {
        this.newString = newString;
        map = new HashMap<String, String>();
    }

    public static MyClass ReadEntityRequest(String string) {
        MyClass Request = new MyClass(string);

        String[] arraystring = Request.string.split("\r\n", 2);
        String[] arraystring1 = arraystring[1].replace("\r\n\r\n", "").split("\r\n");

        for (int i = 0; i < arraystring1.length; i++){
        String[] arraystring2 = arraystring1[i].split(":");
        Request.map.put(arraystring2[0], arraystring[1]);
        }

        return Request;
    }


    public String getHeaderField(String string) {
        String headerField = map.get(string);
        if(headerField != null){
            return headerField;
        }
        return null;
    }
    }

以下是调用获取特定密钥“Content-Length”的方法。

MyClass newRequest = MyClass.ReadEntityRequest(newStream);
int contLengthOffset = Integer.parseInt(newRequest.getHeaderField("Content-Length"));

我想要的结果是只从字符串中获取关键字“Content-Length”。 如有必要,将很乐意提供更多代码。有什么建议?

2 个答案:

答案 0 :(得分:1)

您似乎为地图中的所有键添加了相同的值:

Request.map.put(arraystring2[0], arraystring[1]);

尝试:

Request.map.put(arraystring2[0], arraystring2[1]);

答案 1 :(得分:1)

您的代码有一些错误。请参阅以下更改。现在应该可以了。

public static MyClass ReadEntityRequest(String string) {
    MyClass Request = new MyClass(string);

    String[] arraystring = Request.newString.split("\r\n", 2);
    String[] arraystring1 = arraystring[1].replace("\r\n\r\n", "").split("\r\n");

    for (int i = 0; i < arraystring1.length; i++){
    String[] arraystring2 = arraystring1[i].split(":");
    Request.map.put(arraystring2[0], arraystring2[1]);
    }

    return Request;
}