2010-10-25 19 views
6

Có chức năng phổ biến nào (trong các giao thức apache hoặc tương tự) để tạo bản đồ từ các chuỗi có tham số truy vấn không?chức năng java phổ biến để tạo Bản đồ từ các chuỗi

Để cụ thể:

Variant một (chuỗi truy vấn)

s="a=1&b=3" 
=> Utils.mapFunction(s, '&', '=') 
=> (Hash)Map { a:1; b:3 } 

Variant b (Cachecontrol-Header)

s="max-age=3600;must-revalidate" 
=> Utils.mapFunction(s, ';', '=') 
=> (Hash)Map { max-age:3600; must-revalidate:true } 

Tôi không muốn phát minh lại bánh xe.

Cảm ơn

Trả lời

1

Có vẻ như là một phần mở rộng đơn giản của HashMap sẽ làm điều đó:

/** 
* Simple demo of extending a HashMap 
*/ 
public class TokenizedStringHashMap extends HashMap<String, String> { 

    void putAll(String tokenizedString, String delimiter) { 
    String[] nameValues = tokenizedString.split(delimiter); 
    for (String nameValue : nameValues) { 
     String[] pair = nameValue.split("="); 
     if (pair.length == 1) { 
     // Duplicate the key name if there is only one value 
     put(pair[0], pair[0]); 
     } else { 
     put(pair[0], pair[1]); 
     } 
    } 
    } 

    public static void main(String[] args) { 
    TokenizedStringHashMap example = new TokenizedStringHashMap(); 

    example.putAll("a=1&b=3", "&"); 
    System.out.println(example.toString()); 
    example.clear(); 

    example.putAll("max-age=3600;must-revalidate", ";"); 
    System.out.println(example.toString()); 

    } 
} 
1

Tôi không nghĩ rằng một thư viện như vậy tồn tại, nhưng nếu bạn muốn reimplement nó với rất ít mã, bạn có thể sử dụng "thư viện lambda định hướng", chẳng hạn như Guava hoặc LambdaJ.

2

stringtomap

Hãy dùng thử hoặc duyệt mã nguồn để xem cách triển khai.

Các vấn đề liên quan