我有一个树状图如何匹配树映射值其开头或等于搜索字符串
TreeMap<String,HashSet<String>> kewordVideo = new TreeMap<String,HashSet<String>>();
和
String searchString;
我想打印树图与开始的所有值或等于searchString的
例如树地图具有以下键值对
v1 abc
v2 abd
v3 bcd
v4 bad
和搜索字符串是
所以输出应该是
v1 v2
因为他们都与V4不应该是输出的一部分,因为它不带有开始或等于一个 这里开始完整的代码。无输出来了后,我进入搜索键
package cultureMachine;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public class CultureMachineAssignment {
TreeMap<String,HashSet<String>> kewordVideo = new TreeMap<String,HashSet<String>>();
TreeMap<String,HashSet<String>> videoKeyword = new TreeMap<String,HashSet<String>>();
TreeMap<String,Integer> keywordLength = new TreeMap<String,Integer>();
public static void main(String args[]) throws IOException {
CultureMachineAssignment obj1 = new CultureMachineAssignment();
Integer previousVal=0;
InputStreamReader ip = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ip);
for(int i=0;i<5;i++){
System.out.println("Enter Video name");
String video =br.readLine();
if(!obj1.videoKeyword.containsKey(video)){
obj1.videoKeyword.put(video,new HashSet<String>());
}
System.out.println("Enter keywords for video");
String keyword =br.readLine();
if(!obj1.keywordLength.containsKey(video))
obj1.keywordLength.put(video, 0);
if((obj1.keywordLength.get(video)+keyword.length())<5){
obj1.videoKeyword.get(video).add(keyword);
previousVal=obj1.keywordLength.get(video);
obj1.keywordLength.put(video, previousVal+keyword.length());
}
else{
System.out.println("Maximum length exceeded for video "+ video);
break;
}
if(!obj1.kewordVideo.containsKey(keyword)){
obj1.kewordVideo.put(keyword,new HashSet<String>());
}
obj1.kewordVideo.get(keyword).add(video);
}
for(Map.Entry m:obj1.videoKeyword.entrySet()){
System.out.println(m.getKey()+" "+m.getValue());
}
System.out.println("Enter keyword to search video");
String searchKey = br.readLine();
for(Entry<String,HashSet<String>> entry : obj1.kewordVideo.entrySet()){
if(entry.getValue().contains(searchKey))
System.out.println(entry.getKey());
}
}
}
您忘记解释阻止您编写自己的解决方案的问题。你面临的问题是什么?你知道如何迭代映射键值对吗? – Pshemo
是的我知道我想用正则表达式'if(obj1.kewordVideo.containsKey(searchKey))来做这个'如果搜索字符串完全匹配如何做以 –
开头,你可以添加到你的问题代码中使用?你也可以解释为什么你认为你需要正则表达式(你看过'从字符串startsWith'方法)? – Pshemo