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是非线程安全的,也就是说,你要实现线程安全的方法