部分代码如下: String hql=" select min(e.age),max(age) from Emp e ";
Query query=session.createQuery(hql);
List emps=query .list();
for (Iterator iterator = emps.iterator(); iterator.hasNext();) {
Object[] e = (Object[]) iterator.next();
System.out.println(e[0]+","+e[1]);
}
不明白的是,此处为什么是System.out.println(e[0]+","+e[1]);
而不能是System.out.println(e)(这样只能打印出来的是数组名,不是内部的元素);
用debug发现iterator迭代的第一项是一个Object类型的数组,数组内有两个元素。不理解啊,
感觉应该是迭代的第一项是e【0】,第二项是e[1],不需要弄一个Object这样的数组来放这些e1,e2啊,应该不断的iterator.next直接往下面放才对啊?让游标不断向下走啊
按他这样的话,不管查到多少个结果, iterator.next(); 都只走一步,因为他都放在了第一项的Object类型的数组中,这样iterator.next(); 根本不会向下走了,那不是没什么意义嘛,一个iterator实际就迭代一次。
不知道说清楚了没有
还有就是用debug发现iterator的起始游标是-1对吗?只知道第一次迭代出的是第一项(下标为0的),推断起始为-1(debug看见lastRet=-1),这样的说法是不是不专业。
想了半天没转过弯来,总觉得别扭的很,各位大虾指点下!