我有一张地图:
private HashMap<String, CompactDisc> database;
每个CompactDisc
对象都有一个艺术家,我想让用户输入一个字符串并搜索哈希图并打印出包含该字符串的所有值。
因此,如果我搜索"Jackson"
,我会得到杰克逊5和迈克尔杰克逊(假设他们在CD中)。
答案 0 :(得分:0)
迭代HashMap的值并检查CompactDisc的艺术家名称是否包含指定的字符串。
for (CompactDisc cd : database.values()) {
if(cd.getArtist().contains(searchString)){
System.out.println(cd.getArtist());
}
}
假设CompactDisk
具有返回String的getArtist()
方法。 searchString
是用户指定的字符串。
答案 1 :(得分:0)
Commons Collections提供了一种过滤Collection
个对象的好方法:
// Set up data
String searchString = "Jackson";
HashMap<String, CompactDisc> database = new HashMap<String, CompactDisc>();
database.put("key1", new CompactDisc("Jackson 5"));
database.put("key2", new CompactDisc("Michael Jackson));
database.put("key3", new CompactDisc("Random artist"));
List<CompactDisc> values = database.values();
CollectionUtils.filter(values , new Predicate<CompactDisc>(){
public boolean evaluate( CompactDisc obj ) {
return obj.getArtist().contains(searchString);
}
});
鉴于searchString
=“杰克逊”,在调用.filter
后,values
列表将仅包含CompactDiscs
,其中的艺术家包含“杰克逊”。