0 java
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
import java.util.StringTokenizer;
public class shift {
@SuppressWarnings("unchecked")
public static void main(String args[])
{
String speech = "Sentence:NounPhrase VerbPhrase:NounPhrase :Art Noun:VerbPhrase : Verb | Adverb Verb: Art : the | a : Verb :jumps | sings |: Noun:dog | cat | ";
HashMap<String, String> hashmap = new HashMap<String, String>();
String a;
StringTokenizer st = new StringTokenizer(speech,":");
while (st.hasMoreTokens()) {
String key=st.nextToken().trim();
String value=st.nextToken().trim();
StringTokenizer st1 = new StringTokenizer(value,"|");
while (st1.hasMoreTokens()) {
a=st1.nextToken().trim();
hashmap.put(key, a);
}
}
Set set = hashmap.entrySet();
Iterator ia = set.iterator();
while(ia.hasNext()) {
Map.Entry me = (Map.Entry)ia.next();
System.out.println(me.getKey()+"->"+me.getValue());
}
}
}
the output is
Noun->cat
NounPhrase->Art Noun
Art->a
Sentence->NounPhrase VerbPhrase
Verb->sings
VerbPhrase->Adverb Verb
Run Code Online (Sandbox Code Playgroud)
这段代码缺少一些返回的值,例如 the jumps etc are not show
不确定我是否完全得到了您的问题,但请记住,HashMap 每个键只能存储一个值.
如果要为密钥存储多个动词"Verb",则必须使用以下内容声明地图:
HashMap<String, Set<String>> hashmap = new HashMap<String, Set<String>>();
Run Code Online (Sandbox Code Playgroud)
并将映射到的字存储"Verb"在一个集合中.
这是一个刷新(工作)版本的代码:
import java.util.*;
public class Shift {
public static void main(String args[]) {
String speech = "Sentence:NounPhrase VerbPhrase:NounPhrase :Art " +
"Noun:VerbPhrase : Verb | Adverb Verb: Art : the | " +
"a : Verb :jumps | sings |: Noun:dog | cat | ";
Map<String, Set<String>> hashmap = new HashMap<String, Set<String>>();
StringTokenizer st = new StringTokenizer(speech, ":");
while (st.hasMoreTokens()) {
String key = st.nextToken().trim();
String value = st.nextToken().trim();
StringTokenizer st1 = new StringTokenizer(value, "|");
while (st1.hasMoreTokens()) {
String a = st1.nextToken().trim();
if (!hashmap.containsKey(key))
hashmap.put(key, new HashSet<String>());
hashmap.get(key).add(a);
}
}
for (String key : hashmap.keySet())
System.out.printf("%s -> %s%n", key, hashmap.get(key));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |