如何遍历HashMap的所有值并打印出包含搜索词的任何值

时间:2015-12-02 02:03:27

标签: java search hashmap

我有一张地图:

private HashMap<String, CompactDisc> database;

每个CompactDisc对象都有一个艺术家,我想让用户输入一个字符串并搜索哈希图并打印出包含该字符串的所有值。 因此,如果我搜索"Jackson",我会得到杰克逊5和迈克尔杰克逊(假设他们在CD中)。

2 个答案:

答案 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,其中的艺术家包含“杰克逊”。