java返回list
『壹』 java如何得到一個方法返回的list
你是java的初學者吧,java一個方法的最基本的聲明,由修飾符,返回值,方法名組成,這是必要的三個元素。最簡單的方法也要由這三個部分組成,比如一個簡單的方法
public void test(){
system.out.println("Hello World");
}
這里public是修飾符,表示是公共的方法,void表示返回值,void為空,表示這個方法不需要返回值,test是方法名,小括弧里是方法的參數,沒有即不需要參數,花括弧為具體的java代碼,也就是方法執行的過程。這里是直接在控制太輸出Hello World這個句子。
回到你的問題,一個方法要返回List,即表示這個方法的返回值為List,那麼遵循我最開始說的方法組成,這里的返回值就是List,所以把void 改成List即可。寫個完整的例子,一個方法返回一個包含整數1~10的List。
public List getNumberList(){
List list=new ArrayList();
for(int i=1;i<=10;i++){
list.add(i);
}
return list;
}
此處方法返回值聲明為List,即表示這個方法必須返回一個List,不返回List,至少要返回一個Null,因為java的方法,只要返回值不為void,都必須返回一個對象。
希望我的回答能幫到你~~
『貳』 java查詢某兩個欄位返回list列表,
查詢某幾列時返回的結果是裝有object數組的list
List<Object[]> list=SightdemoDao.querysightdemo(detilParam);
for(int i=0;i<list.size();i++){
Object[] le=list.get(i);
System.out.println(le[0]);
System.out.println(le[1]);
}
『叄』 java 用返回的list去查詢資料庫,返回list
分析你的邏輯應該如下:
1、查詢表1中符合條件的信息,獲取一個結果集合1;
2、基於結果集合1循環,檢索表2,獲取結果集合2。
如此,如果表1、表2間存在直接關聯關系(即直接使用結果集合1中的部分信息作為表2查詢的條件),那麼完全可以在後台將兩張表關聯查詢,這樣避免了通過java進行循環,在大數量級情況下會嚴重佔用內存。
如果表1,表2間沒有直接的關聯關系(即通過循環表1,判斷其中條件後按照其它的特定對照值去查詢表2),那麼仍然建議使用後台表關聯查詢,及將表1查詢的結果集按照不同的條件獲取的值轉換成對應的映射值後作為一個基準集合,然後將這個集合與表2關聯查詢即可。具體的sql語句,得根據你使用的資料庫和具體場景去編寫。
總之,此類情況,完全可以交由資料庫搞定,如果使用你現在的邏輯(即查詢表1,循環結果集1,然後查詢表2,獲取結果集2),雖然原則上沒有錯,但會增加很多內存開銷,在大數據量級的情況下,非常容易出現內存溢出的異常,並不作為合理的編碼方式。
『肆』 JAVA 定義方法里,前面是list類型,那麼返回應該是什麼
這個方法應該返回list塞,,
把log對象放到list中,然後返回list就OK 。
這樣放。
ArrayList list=new ArrayList();
while(rs.next()){
log=new Log();
log.setId(rs.getInt(1));
log.setLog_title(rs.getString(2));
log.setLog_content(rs.getString(3));
log.setLog_date(rs.getDate(4));
log.setRemark(rs.getString(5));
list.add(log);//把log放到list.
}
return list;
『伍』 Java方法返回list<e>是什麼情況
返回list<e>,就是 「返回一個對象集合」 字太小看不太清楚,你這代碼應該沒有問題吧。應該是其他地方沖突了。上面報錯會告訴你為什麼報錯啊,把報錯的內容貼出來啊。
『陸』 java 將返回list型 改為 返回數組型
兩種方案:
第一種:(推薦使用這種)
只要修改返回類型,並把
return tmplist改成return tmplist.totoArray();就行了 取出的是Object數組,需要強制轉換成HashMap;
//返回值是數組
public Object[] quyListBySqlAndParams(String querystr, List params,int dno) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rst = null;
ResultSetMetaData rsmd = null;
List tmplist=new ArrayList();
try{
conn = myDataUtil.getConnection(dno);
pstmt = conn.prepareStatement(querystr);
//參數賦值
for(int i=0;i<params.size();i++){
String param = params.get(i)==null?"":params.get(i).toString().trim();
pstmt.setString(i+1,param);
}
rst = pstmt.executeQuery();
rsmd = rst.getMetaData();
while (rst.next()) {
Map tmpmap = new HashMap();
for ( int i = 1; i <= rsmd.getColumnCount(); i++ ){
tmpmap.put(rsmd.getColumnName(i), rst.getObject(i));
}
tmplist.add(tmpmap);
}
}catch(Exception e){
System.out.println("pubgetstr"+e.toString()+querystr);
}finally{
myDataUtil.free(rst,pstmt,conn);
//這里調用toArray()方法返回數組
return tmplist.toArray();
}
}
。
方案二:
原理就是將結果集的游標定位到最後一行,然後通過返回行號確定記錄數,從而確定數組的長度。然後再將游標回退到beforefirst
但是一定要注意 這么做有個地方要考慮, 默認的ResultSet類型是TYPE_FORWARD_ONLY,只向前的游標,不允許指針回退;在定義時要將默認的ResultSet類型里的TYPE_FORWARD_ONLY改成ResultSet.TYPE_SCROLL_INSENSITIVE,把你那句改成這個
pstmt = conn.prepareStatement(querystr, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//返回數組
public Object[] quyListBySqlAndParams(String querystr, List params,int dno) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rst = null;
ResultSetMetaData rsmd = null;
Object[] tmpAarry;
try{
conn = myDataUtil.getConnection(dno);
//注意 這里做了修改 pstmt=conn.prepareStatement(querystr,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//參數賦值
for(int i=0;i<params.size();i++){
String param = params.get(i)==null?"":params.get(i).toString().trim();
pstmt.setString(i+1,param);
}
rst = pstmt.executeQuery();
rsmd = rst.getMetaData();
// 這里做了修改
rst.last();
int count = rst.getRow();
tmpAarry = new Object[count];
rst.beforeFirst();
while (rst.next()) {
Map tmpmap = new HashMap();
int j = 0;
for ( int i = 1; i <= rsmd.getColumnCount(); i++ ){
tmpmap.put(rsmd.getColumnName(i), rst.getObject(i));
}
tmpAarry[j]=tmpmap;
j++;
}
}catch(Exception e){
System.out.println("pubgetstr"+e.toString()+querystr);
}finally{
myDataUtil.free(rst,pstmt,conn);
// 返回的是個數組
return tmpAarry;
}
}
好了,這兩種方法的結構是一樣的,看是你也看到了,自己寫有多麻煩,還要考慮很多意想不到的問題,比如那個滾動結果集。所以能用java api中提供的最好用,那都是經得住考驗的,而且方便的很。
『柒』 java泛型方法可以返回 List<T> 嗎
可以!!返回值必須是你定義的類型包含的泛型也必須一樣
『捌』 java中如何返回多個list
方法一、將多個List封裝到一個JavaBean內:
private static void show1() {
StringEQTest.ListArr listArr = new StringEQTest.ListArr();
List<String> names = listArr.names;
for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}
List<Integer> ages = listArr.ages;
for (int i = 0; i < ages.size(); i++) {
System.out.println(ages.get(i));
}
}
public static class ListArr {
List<String> names = new ArrayList<String>();
List<Integer> ages = new ArrayList<Integer>();
public ListArr() {
names.add("names1");
names.add("names2");
names.add("names3");
ages.add(50);
ages.add(40);
ages.add(30);
ages.add(88);
}
public List<String> getNames() {
return names;
}
public void setNames(List<String> names) {
this.names = names;
}
public List<Integer> getAges() {
return ages;
}
public void setAges(List<Integer> ages) {
this.ages = ages;
}
}
結果:
names1
names2
names3
50
40
30
88
-------------------------------------------------------------------------------
方法二、將List包裝到Map集合內,取出的時候需要進行類型轉換
private static void show2() {
Map<String, Object> lists = getLists();
List<String> names = (List<String>) lists.get("names");
for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}
List<Integer> ages = (List<Integer>) lists.get("ages");
for (int i = 0; i < ages.size(); i++) {
System.out.println(ages.get(i));
}
}
public static Map<String, Object> getLists() {
List<String> names = new ArrayList<String>();
List<Integer> ages = new ArrayList<Integer>();
names.add("names1");
names.add("names2");
names.add("names3");
ages.add(50);
ages.add(40);
ages.add(30);
ages.add(88);
Map<String, Object> map = new HashMap<String, Object>();
map.put("names", names);
map.put("ages", ages);
return map;
}
結果:
names1
names2
names3
50
40
30
88
『玖』 java中的executeQuery方法返回List集合和resultSet哪個更好
Table保存的什麼類的內容,就返回一個 List<T>,方便調用者使用;List<HashMap>不是個好的選擇。
一個人寫著玩,隨便了。