![](/img/trans.png)
[英]Is a LinkedHashMap basically a LinkedList with O(1) 'contains'?
[英]LinkedHashMap - contains method
我需要阅读一个标志以验证是否发送电子邮件,该标志位于LinkedHashMap
,因此我试图遍历该标志以查找ID,然后必须询问是否为true或错误,我正在尝试:
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
}
}
这是正确的吗?
假设它可以起到以下作用:
if(file.findAllFiles(userid).contains(haveFiles = true))
然后我认为问题在于这种情况本身。 你写的东西大致相当于写作
??? haveFiles = true;
if(file.findAllFiles(userid).contains(haveFiles))
(其中???可以是Object
, Boolean
或boolean
,从代码快照中不知道)
我敢打赌,您可能想做的是
Boolean haveFiles = file.findAllFiles(userid).get("haveFiles");
if (Boolean.TRUE.equals(haveFiles) {
完成的操作称为contains
方法,该方法接收任何Object,如果该对象在映射的值中,则返回true。 您可能不希望这样做,我想您要做的是将与“ haveFiles”键关联的值检索到映射中,因为您必须使用get
方法。
PS:另外,如果file.findAllFiles(userid)
方法确实在调用某些数据库内容,则您可能只想调用一次(对我而言,第一次看起来完全不必要)。
我认为您的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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.