稀奇稀奇真稀奇--使用java Map读取neo4j数据碰到的一个困惑
2015-04-02 22:53
363 查看
项目需要,使用neo4j数据库读取XC旅游数据,在写一个方法的时候碰到了一个问题,乍一看逻辑没问题,但是结果是错的,贴上代码一阅:
高亮的地方是问题所在,像上边一样放到while外边的话,输出的list里面的元素一样,只有放到while里面,也就是每次new一个,结果才对
前述代码感觉也没有问题,莫非是编译器将字节码优化了?
问题mark一下,敬请指教。
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一下,敬请指教。
相关文章推荐
- 使用JAVA读取EXCEL文件里面的数据
- 将后台数据读取到前台的EXCEL文件中去,用javascript实现,asp.net,javacript(发一个原创)
- 使用EF6和MVC5实现一个简单的选课系统--使用EF6读取相关数据(7/12)
- JAVA使用JeasyOPC读取OPC 服务器数据
- hadoop超时解决办法context.progress()的作用 假设在map()方法中,你有一个从数据库读取大量数据的操作,是用一个循环来完成的,并且,在读完全部的数据之前,你不会有任何的数据输出
- 使用JAVA读取EXCEL文件里面的数据
- 非使用hibernate配置实体类关联数据库表,简单javaBean开发时读取一条数据解决方案
- java使用ByteArrayOutputStream读取任意大小的二进制数据
- Java基础之读文件——使用通道读取混合数据2(ReadPrimesMixedData2)
- JAVA:使用HTTP的get()方法来实现网络数据的读取
- Java 使用DataInputStream将数据写入文件,使用FileReader读取演示
- 一个使用cv::Mat按单通道读取数据然后按照灰度范围设置灰度的例子
- 使用Java程序一次分段读取所有数据(如海量数据)并计数处理
- Java使用LinkedList模拟一个堆栈或者队列数据结构
- 使用java调用C语言的方法,让java获取串口数据并生成一个String对象的代码。
- 使用java读取Excel表格中的数据 .
- JAVA: 使用Java读取JSON数据
- 如何使用JavaExcel(jxl)读取一个文件并写入一个新文件
- JAVA:使用Java读取XML数据
- 使用java读取Excel表格中的数据