如何把List中的數據取出來?


SSH的框架,因為涉及到一個比較復雜的查詢方法,所以就用直接寫的sql語句,
用Query q = getSession().createSQLQuery(sql);執行
結果保存在一個list中:List = q.list();
查詢結果list的size是對的,我想取出list中的每一個值,
於是,我for(int i=0; i<l.size; i++)
可是System.out.println(l.get(i));全是[Ljava.lang.Object;@13a46b6這樣的。
因為取出來的數據沒有相對應的實體類,所以我該如何做?
查詢結果有2列,一列是id,一列是名稱
我想把它們放在Map里,用l.get(i)作為map的key值,l.get(i+1)作為map的value值,
可是這樣put進去的也是Ljava.lang.Object;@13a46b6這樣的吧?

在線等~~~

19 个解决方案

#1


強制類型轉換

#2


l.get(i).toString();結果是Ljava.lang.Object;@13a46b6

(String)l.get(i);報錯

String.valueOf(l.get(i));結果也是Ljava.lang.Object;@13a46b6

#3


該回復於2011-03-14 08:56:33被版主刪除

#4


用Iterator進行容器的遍歷
Iterator it = list.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}

#5


該回復於2011-03-14 09:16:15被版主刪除

#6


因為取出來的數據沒有相對應的實體類,所以我該如何做?
沒有對應的實體類,那么取出來的肯定是object了。l.get(i) get到的也肯定是object了。
既然用了hibernate,就建議寫一個實體類,然后你想取字段放到map里不就easy了嗎。

#7


得到的是對象數組集合, 每個數組表示一個row, 用下標得到數組中的每個元素, 然后強轉成相應的類型

#8


Map map = new HashMap();
for(int i=0;i<l.size;i++){
    Object[] object = l.get(i);
    if(i%2==0){
      for(int j=0;j<object.length;j++){
        map.put(object[i],object[i+1]);
      }
    }
}

當心數組越界哦。。。。。。。

#9


你用的是ssh開發
如果你是要將list在頁面顯示的話,不用再用map裝了。 
直接用你本來的把查詢的list在頁面使用<s:iterator id="f" value="%{list}" >
就行了。 

#10


List l = query.list();
for(int i=0;i< l.size();i++){
Object[] object = (Object[]) l.get(i);
for(int j=0;j<object.length;j++){
if(j==0){
int n = (Integer)object[j];
String s = (String)object[j+1];
System.out.println("n="+ n+ "s="+s);
                                                你自己在裝進map里面吧。 
}
}
}

#11


用Iterator進行容器的遍歷
Iterator it = list.iterator();
while(it.hasNext()){
  System.out.println(it.next());
}
然后進行相應的類型轉換

#12


你查詢出來的東西又不是一列,沒有對應的實體類?,

#13


該回復於2011-03-14 10:12:34被版主刪除

#14


得到是數組啊

#15


引用 10 樓 songxueli59421 的回復:
List l = query.list();
for(int i=0;i< l.size();i++){
Object[] object = (Object[]) l.get(i);
for(int j=0;j<object.length;j++){
if(j==0){
int n = (Integer)object[j];
String s = (String)object[j+1]……

查詢的內容,必須是兩個,前面是int 后面是String。 就像你說的一樣。

#16


該回復於2011-03-14 10:13:48被版主刪除

#17


在使用ssh的時候  返回的結果集如果是多個表中的字段,在相應的list里面的對象也是用數組對象去存儲的,
比如list.get(0)[0]是第一個對象
list.get(0)[1]是第二個對象

#18


你取出來的實體,你要打印實體的某一個屬性才行啊!不輸出一個屬性值,當然就是一個實體輸出來了哦

#19


要不查兩次吧,每次查一列。這樣最省事

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com