您的位置:首页 > 编程语言 > Java开发

稀奇稀奇真稀奇--使用java Map读取neo4j数据碰到的一个困惑

2015-04-02 22:53 363 查看
项目需要,使用neo4j数据库读取XC旅游数据,在写一个方法的时候碰到了一个问题,乍一看逻辑没问题,但是结果是错的,贴上代码一阅:

public List<Map<String,Object>> commentsOfSite(Node sitenode){

List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
```java
Map<String,Object> comInfo=new HashMap<String,Object>();
```
Iterator<Relationship> relIter1=sitenode.getRelationships(MyRelationship.COMMENT, Direction.INCOMING).iterator();
while (relIter1.hasNext()){

comInfo.put("siteXCID", sitenode.getProperty("XCID"));
Relationship rel1=relIter1.next();
Node comNode=rel1.getStartNode();
Object s_score = null;
Object r_score = null;
Object i_score = null;
int divisor=0;
int score=0;
if(comNode.hasProperty("SIGHT_SCORE")){
s_score = comNode.getProperty("SIGHT_SCORE");
score += Integer.parseInt((String) s_score);
divisor++;
}
if(comNode.hasProperty("INTEREST_SCORE")){
i_score=comNode.getProperty("INTEREST_SCORE");
score += Integer.parseInt((String)i_score);
divisor++;
}
if(comNode.hasProperty("RATIO_SCORE")){
r_score=comNode.getProperty("RATIO_SCORE");
score += Integer.parseInt((String)r_score);
divisor++;
}
if(s_score!=null || i_score!=null || r_score!=null){
int rate= score/divisor;
comInfo.put("rate", rate);
}
else
comInfo.put("rate", "null");
Object comDate=comNode.getProperty("COMMENT_TIME");
comInfo.put("CO
4000
MMENT_TIME",comDate);
Iterator<Relationship> relIter2=comNode.getRelationships(MyRelationship.COMMENT, Direction.OUTGOING).iterator();
while(relIter2.hasNext()){
Relationship rel2=relIter2.next();
Node usernode=rel2.getEndNode();
if(!usernode.getProperty("TYPE").equals("用户"))continue;
Object userXCID=usernode.getProperty("XCID");
comInfo.put("userXCID", userXCID);
}

list.add(comInfo);
}
return list;

}
2015/4/2


高亮的地方是问题所在,像上边一样放到while外边的话,输出的list里面的元素一样,只有放到while里面,也就是每次new一个,结果才对

Iterator<Relationship> relIter1=sitenode.getRelationships(MyRelationship.COMMENT, Direction.INCOMING).iterator();
while (relIter1.hasNext()){
```java
Map<String,Object> comInfo=new HashMap<String,Object>();
```
comInfo.put("siteXCID", sitenode.getProperty("XCID"));


前述代码感觉也没有问题,莫非是编译器将字节码优化了?

问题mark一下,敬请指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  neo4j java Map
相关文章推荐