容器進階應用
容器的泛型
容器可以預先定義內容物的類型,減少取出時轉型的麻煩。泛型只需以下定義
List
List
容器與迴圈
List、Map,以及繼承的類別。如前面的ArrayList、HashMap等。都是可以循序放入各種物件的容器。Map student; //學生資料
List
學生資料中要增加各項成績的List,只要在學生資料Map中增加1個key,裡面放入成績就可以了。
Map student; //學生資料
List
取出的時候,則要用到之前所學的巢狀迴圈
for(int i=0; i
score=(List)students.get(i).get("score"); //將裝入的成績取出
//以巢狀迴印出
for(int j=0; j
}
}
完整的程式如下
Map student; //學生資料
List
Map score_info;//成績資料
List
//建立1個學生
student=new HashMap();
student.put("no", "001");
student.put("st_name", "John");
score=new ArrayList(); //建立第1個學生的成績容器
score_info=new HashMap();//建立1個成績資料
score_info.put("cs_name", "國文");
score_info.put("score", 90);
score.add(score_info);//將成績裝入容器
score_info=new HashMap();
score_info.put("cs_name", "英文");
score_info.put("score", 80);
score.add(score_info);
score_info=new HashMap();
score_info.put("cs_name", "數學");
score_info.put("score", 70);
score.add(score_info);
student.put("score", score); //將成績裝入學生資料中
students.add(student);//將學生裝入容器
//-----------------------------------------------
student=new HashMap();
student.put("no", "002");
student.put("st_name", "Mary");
score=new ArrayList(); //建立第1個學生的成績容器
score_info=new HashMap();//建立1個成績資料
score_info.put("cs_name", "國文");
score_info.put("score", 95);
score.add(score_info);//將成績裝入容器
score_info=new HashMap();
score_info.put("cs_name", "英文");
score_info.put("score", 85);
score.add(score_info);
score_info=new HashMap();
score_info.put("cs_name", "數學");
score_info.put("score", 75);
score.add(score_info);
student.put("score", score); //將成績裝入學生資料中
students.add(student);//將學生裝入容器
//-----------------------------------------------
//循序將學生列出
for(int i=0; i
score=(List)students.get(i).get("score"); //將裝入的成績取出
//以巢狀迴印出
for(int j=0; j
}
}
}
資料庫與容器
import java.sql.*;
public class DateBaseTest {
public static void main(String[] args) {
}
}
Class.forName("com.mysql.jdbc.Driver");
String host =" jdbc:mysql://資料庫地址:埠號/資料庫名稱";
String user="root";
String pass="spring";
Connection conn = DriverManager.getConnection(host, user, pass);
Statement stmt = conn.createStatement();
List >list=new ArrayList >();//縱資料容器
Mapcolumns;//橫資料容器
ResultSet rs = stmt.executeQuery("SELECT * FROM Class LIMIT 10");//SQL查詢
ResultSetMetaData metaData = rs.getMetaData();//原生查詢結果
應用while (rs.next()) {
columns = new LinkedHashMap();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
columns.put(metaData.getColumnLabel(i), rs.getObject(i));
}
list.add(columns);
}
for(int i=0; i完整程式碼System.out.println(list.get(i).get("ClassName"));
}
import java.sql.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String host ="jdbc:mysql://192.168.0.1/db";
String user="user";
String pass="pass";
Connection conn = DriverManager.getConnection(host, user, pass);
Statement stmt = conn.createStatement();
List>list=new ArrayList >(); Map columns;
ResultSet rs = stmt.executeQuery("SELECT * FROM Class LIMIT 10");
ResultSetMetaData metaData = rs.getMetaData();
while (rs.next()) {
columns = new LinkedHashMap();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
columns.put(metaData.getColumnLabel(i), rs.getObject(i));
}
list.add(columns);
}
for(int i=0; iSystem.out.println(list.get(i).get("ClassName"));
}
}
}
沒有留言:
張貼留言