【问题标题】:LinkedHashMap - contains methodLinkedHashMap - 包含方法
【发布时间】:2014-09-24 18:16:39
【问题描述】:

我需要读取一个标志来验证我是否会发送电子邮件,这个标志位于 LinkedHashMap 上,所以我试图通过它寻找一个 ID,然后我将不得不问是真还是假,我正在尝试:

    while(iterator.hasNext()){

         LinkedHashMap<String, Object> fileMap = (LinkedHashMap<String, Object>) iterator.next();
         userid = (Long)fileMap.get("USERID");
         file.findAllFiles(userid);

         if(file.findAllFiles(userid).contains(haveFiles = true)){
             //send email
         }else{
             //do something
         }

     }

对吗?

【问题讨论】:

  • 你试过代码了吗?它会给你任何错误吗?
  • 我猜你的用户 ID 是类型对象? findAllFiles 是做什么的?
  • 这还能编译吗?
  • findAllFiles 是一种需要 Long 的方法,(这就是我使用演员表的原因)findAll 从数据库返回一个地图提取,有很多值,但我只对一个感兴趣:有文件标志。
  • 是的!没有错误,它编译:S

标签: java contains linkedhashmap


【解决方案1】:

我认为你的 if 表达式有逻辑错误。

haveFiles = true

将始终返回 true,将您的表达式简化为:

file.findAllFiles(userid).contains(true)

因为(haveFiles = true) 将值 true 赋给变量 haveFiles。

您应该在以下几行中做一些事情:

Map<Flag, Boolean> keyValueMap = file.findAllFiles(userid)
if(keyValueMap.contains(Flag.HAVE_FILES) == true){
     //send email
 }else{
     //do something
 }

..假设您 file.findAllFiles() 返回一个带有标志及其布尔状态的地图对象,而 Flag 是一个包含所有受支持标志的枚举。

表达式

(keyValueMap.contains(Flag.HAVE_FILES) == true)

仅当 keyValueMap 包含 Flag.HAVE_FILES 的条目并且值为 true 时才会评估为 true。

【讨论】:

    【解决方案2】:

    假设它可以工作到:

    if(file.findAllFiles(userid).contains(haveFiles = true))
    

    那么我认为问题在于这种情况本身。你写的和写的差不多

    ??? haveFiles = true;    
    if(file.findAllFiles(userid).contains(haveFiles))
    

    (其中???可以是ObjectBooleanboolean,从你的代码快照中不知道)

    我敢打赌你可能想做的事情是这样的

    Boolean haveFiles = file.findAllFiles(userid).get("haveFiles");
    if (Boolean.TRUE.equals(haveFiles) {
    

    您所做的调用contains 方法,该方法接收任何对象,如果该对象在地图的值中,则返回true。您可能不希望这样,我想您想要做的是将与“haveFiles”键关联的值检索到映射中,因为您必须使用get 方法。

    PS:另外,如果file.findAllFiles(userid) 方法确实调用了一些数据库内容,您可能只想调用它一次(第一次对我来说完全没有必要)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 2011-12-08
      • 2011-12-04
      • 2012-05-16
      • 1970-01-01
      相关资源
      最近更新 更多