2011-04-24 97 views
0

我有一个奇怪的问题,我不完全明白如何解决。有人能给我一些关于hashmaps的指示吗?来自python dict命令的Java hashmap?

我有一个变量:

/servlet/charting?base_color=grey&chart_width=288&chart_height=160&chart_type=png&chart_style=manufund_pie&3DSet=true&chart_size=small&leg_on=left&static_xvalues=10.21,12.12,43.12,12.10,&static_labels=blue,red,green,purple" 

我基本上要10.21,12.12,43.12,12.10与蓝色,红色,绿色,紫色相关联(在顺序显示)

在Python中我创建了一个这样做的方法:

def stripChart(name): 
    name = str(name) 
    name = urlparse.urlparse(name) 
    name = cgi.parse_qs(name.query) 
    name = dict(zip(name['static_labels'][0].split(','), name['static_xvalues'][0].split(','))) 

不知道如何在java中做到这一点。到目前为止,我有:

URL imgURL = new URL (imgTag); 
String[] result = imgURL.getFile().split("&"); 
for (int x=0; x<result.length; x++) 
    System.out.println(result[x]); 

这给了我:

chart_width=288 
chart_height=160 
chart_type=png 
chart_style=manufund_pie 
3DSet=true 
chart_size=small 
leg_on=left 
static_xvalues=10.21,12.12,43.12,12.10, 
static_labels=blue,red,green,purple, 

在这一点上我很困惑如何链接static_labels和static_xvalues值。

非常感谢。任何指针都会很棒。

回答

0

你想看看StringTokenizer

像这样的东西(假设你存储在标签为字符串“static_labels”和字符串“static_xvalues”值):

HashMap<String, Double> colorMap = new HashMap<String, Double>(); 
StringTokenizer labelTok = new StringTokenizer(static_labels, ","); 
StringTokenizer valuesTok = new StringTokenizer(static_xvalues, ","); 
while(labelTok.hasMoreElements()){ 
    assert(valuesTok.hasMoreElements()); 
    colorMap.put(labelTok.nextElement(), Double.parseDouble(valuesTok.nextElement())); 
} 
0

看看使用java.util.HashMap中。假设您已将static_xvalues和static_labels请求参数存储到相应的字符串变量中。像下面的内容将创建的映射关系对你:

String[] vals = static_xvalues.split(","); 
String[] labels = static_labels.split(","); 
HashMap<String,String> map = new HashMap<String,String>(); 
for (int i=0; i < vals.length; ++i) { 
    map.put(labels[i], values[i]); 
} 

你不说,如果xvalues需要被存储为浮动与否。如果是这样,您需要首先将vals数组转换为Float(或Double)数组,然后相应地修改HashMap实例:

HashMap<String,Float> = new HashMap<String,Float>();