javalist過濾資料庫
1. java資料庫一次性取出大數據量的數據用arraylist還是linklist
取出大數據量的數據和用arraylist還是linklist沒有任何關系!
看你的關注點在哪裡,如果數據量夠大,你要考慮查詢時間會不會太長,你能不能接受
ArrayList和LinkList的區別是底層數據結構不一樣。
ArrayList底層用得是數組,查詢快。
LinkedList底層是自定義數據體,增刪快。
所以你要如何處理這個數據,可以根據不同的特別來決定使用哪一個?
如果僅僅只是作為一個接收體,並不對數據做任何處理,那麼兩者都一樣
2. java 如何利用list調用MySQL的數據
// 1. 注冊驅動
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// Mysql 的驅動
// 2. 獲取資料庫的連接
java.sql.Connection conn = java.sql.DriverManager.getConnection(
"jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK", "root", null);
// 3. 獲取表達式
java.sql.Statement stmt = conn.createStatement();
// 執行插入數據的 SQL
stmt.executeUpdate("insert into MyUser(username, password) values('JDBC 中文測試', '密碼')");
// 4. 執行 SQL
java.sql.ResultSet rs = stmt.executeQuery("select * from MyUser");
// 5. 顯示結果集裡面的數據
while(rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString("username"));
System.out.println(rs.getString("password"));
System.out.println();
}
// 6. 釋放資源
rs.close();
stmt.close();
conn.close();
請參考//4部分
3. java中,循環list,符合條件的存入資料庫,不符合條件的return,有多少種解決方法
這個你自己都表示符合條件存數據不符合就不要
for(int i = 0; i < list.size();i++)
{
if (符合條件)
{
//保存到資料庫,只要符合條件就保存不符合的不處理不就完了
saveData(list.get(i));
}
}
4. 怎麼將java中list中的數據序列化到資料庫中,方便存取
請注意看如下代碼:
public List getObject(String sql, Object[] object) { //sql執行語句,object是你sql語句裡面的參數
List list = new ArrayList();
Connection con = null;
PreparedStatement pre = null;
ResultSet rs = null;
try{
con = C3P0Util.getInstance().getConnection(); //這是你獲得資料庫連接,你把這里改成調用你自己寫的jdbc方法
pre = con.prepareStatement(sql); //執行sql語句
if(object!=null){
for(int i=0;i<object.length;i++){
pre.setObject(i+1, object[i]); //給sql裡面的參數進行賦值
}
}
rs = pre.executeQuery();
while(rs.next()){
Users u = new User();
u.setUserName(rs.getString("UserName"));
u.setUserPas(rs.getString("UserPas")); list.add(u);
}
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
C3P0Util.close(con, pre, rs); //關閉資料庫資源
}
return list; //返回list集合
}
注意:list裡面保存的是User對象的信息
你要獲得User對象的信息,那麼就要遍歷list
for(int i=0;i<list.size;i++){
User u = (User)list.get(i); System.out.println("UserName:"+u.getUserName());
System.out.println("UserPas:"+u.getUserPas());
} 上面是針對list裡面有很多個User對象,當然list裡面只有一個User對象,也是可以的。
如果你的list裡面只有一個User,那麼可以直接:User u = (User)list.get(0);
System.out.println("UserName:"+u.getUserName());
System.out.println("UserPas:"+u.getUserPas());
希望對你有幫助!
5. 在java中用list儲存資料庫數據,並到另一個資料庫中讀取,碰上問題,請教高手!
你的result1=ps.executeQuery("SELECT_(省略)";所以有值
但是result對象沒有看到有執行語句的代碼呀
6. 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),雖然原則上沒有錯,但會增加很多內存開銷,在大數據量級的情況下,非常容易出現內存溢出的異常,並不作為合理的編碼方式。
7. java怎麼像sql的where條件那樣處理list裡面的數據
public static void main(String[] args){
vo vo1 = new vo("張三",12,"武漢");
vo vo2 = new vo("李四",12,"武漢");
vo vo3 = new vo("王五",12,"北京");
List<vo> list = Arrays.asList(vo1,vo2,vo3);
//條件
vo vo4 = new vo("",null,"武漢");
if(vo4.getName() != null && !"".equals(vo4.getName())){
list = list.stream().filter(vo -> vo.getName().equals(vo4.getName()))
.collect(Collectors.toList());
}
if(vo4.getAge() != null){
list = list.stream().filter(vo -> vo.getAge().equals(vo4.getAge()))
.collect(Collectors.toList());
}
if(vo4.getCity() != null && !"".equals(vo4.getCity())){
list = list.stream().filter(vo -> vo.getCity().equals(vo4.getCity()))
.collect(Collectors.toList());
}
list.stream().forEach(vo -> {
System.out.println(vo);
});
}
8. 用java想把從資料庫里查詢到的值放到list中,用list來輸出資料庫中的內容,新手求大神指教
遍歷你的ResultSet即可
while(rs.next()) {
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
9. java 怎麼把資料庫中符合條件的數據一條條的添加到list裡面
Result rs = conn.executeQuery();
while(rs.next()){
list.add(rs.getString("columnName"));
}
-- 定義函數
create function func()
returns @tbl table (c_au_id varchar(20), c_au_lname varchar(50))
begin
insert into @tbl select au_id, au_lname from dbo.authors
return ;
end
-- 查詢語句
select * from func()
10. java 中 。資料庫中有10萬條記錄 list中有5萬條 ,怎樣不通過for循環,找出資料庫和list中相同的數據
首先,不通過循環來實現這種需求是不可能的,即使你使用了java有關collection的api,看似沒有循環,其內部還是有循環的
其次,你對重復數據的定義很含糊,是數據的主鍵相同就算數據相同,還是數據的所有欄位相同才算數據相同,這里要有明確定義
我覺得,我的做法是這樣的,先將list中5萬條數據分成5個新list,每個list中1萬條數據,然後將資料庫中的數據讀取出來,每一萬條一個list,也就是10個list
然後寫五個線程,分別進行對比,注意,list是非線程安全的,也就是說,你要實現線程安全的方法