for循环就可以了
public static void main(String[] args) {
String[] temp = {"aa","bb","cc"};
for(int i=0;i<templength;i++){
Systemoutprintln(temp[i]);
}
}
首先web程序,每天访问量巨大!
页面本身已经有一个数据库查询,我打算在此次数据库查询里把我需要的另一种信息查出来,而不是多一次数据库查询,这样的代价就是循环遍历结果集的时候,循环次数多了(预计最多多了100以内)。
想问下,两种方案哪个从性能方面来说更 *** 蛋?
1,一次数据库查询查出所有,代价是多了几次循环。
2,分开两次数据库查询。
import javasqlConnection;
import javasqlDriverManager;
import javasqlPreparedStatement;
import javasqlResultSet;
import javasqlSQLException;
//stmtexecuteUpdate("create table People(name varchar(255),A int,B int)");
//stmtexecuteUpdate("insert into People values('张三',1,0)");
//stmtexecuteUpdate("insert into People values('李四',2,1)");
//stmtexecuteUpdate("insert into People values('王五',3,1)");
//stmtexecuteUpdate("insert into People values('赵云',4,2)");
//stmtexecuteUpdate("insert into People values('张飞',5,3)");
public class Test {
private static void query(Connection conn,String sql,int a) {
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = connprepareStatement(sql);
stmtsetInt(1, a);
rs = stmtexecuteQuery();
while (rsnext()) {
Systemoutprintln(rsgetString("name")+":"+rsgetInt("A"));
query(conn,sql,rsgetInt("A"));
}
} catch (SQLException e) {
eprintStackTrace();
} finally {
if (rs != null) {
try {
rsclose();
rs=null;
Systemoutprintln(a+":rs closed");
} catch (SQLException e) {
eprintStackTrace();
}
}
if (stmt != null) {
try {
stmtclose();
stmt=null;
Systemoutprintln(a+":stmt closed");
} catch (SQLException e) {
eprintStackTrace();
}
}
}
Systemoutprintln("===============================");
}
public static void main(String[] args) {
Connection conn = null;
try {
conn = DriverManagergetConnection("jdbc:derby:E:/Derby/test");
String sql="select from people where B=";
query(conn,sql, 1);
} catch (SQLException e) {
eprintStackTrace();
} finally {
if (conn != null) {
try {
connclose();
Systemoutprintln("Connection关闭。");
} catch (SQLException e) {
eprintStackTrace();
}
}
}
}
}
第一个问题: 这个是创建一个类型为buyEntity的集合 对吗
不是, 创建了一个size为0的ArrayList集合 集合内放的对象是BuyEntity类型的
第二个问题: 为什么每次循环都需要创建一个对象呢
因为从数据库查询到的数据可能有很多条 第一个buyEntity对象一条数据, 每读取完一条数据, 将它保存在ArrayList集合中
第三个问题: 这步作用
利用foreach方式遍历, c被定义object, object是所有类的超类, 在foreach的过程中 result的数据被向上转型为父类 所以利用buyentity来接收c, 需要强制向下转型 例如: 人是动物, 是向上转型, 动物不一定是人, 只能强制转型 但这个东西如果只是一个动物但不是人, 被强制转型为人, 则会抛出异常
在foreach中可以写成for(buyEntity c:result)这样 这样就不用转型了
写个实体类,重写equals方法。
package com;
import javautilArrayList;
import javautilList;
public class Zhuq {
/1 小红 123
2 小明 456
3 小强 123 /
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
listadd(new Student("小红", "1", "123"));
listadd(new Student("小明", "2", "456"));
listadd(new Student("小强", "3", "123"));
for(Student bean :list){
if(listcontains(bean)){
Systemoutprintln(bean);
}
}
}
}
package com;
public class Student {
private String name;
private String Id;
private String pwe;
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getPwe() {
return pwe;
}
public void setPwe(String pwe) {
thispwe = pwe;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Student){
if(((Student)obj)getPwe()equals( thispwe) && !((Student)obj)getId()equals( thisId)){
return true;
}
}
return false;
}
@Override
public String toString() {
return "Student [name=" + name + ", Id=" + Id + ", pwe=" + pwe + "]";
}
public Student(String name, String id, String pwe) {
super();
thisname = name;
Id = id;
thispwe = pwe;
}
public Student() {
super();
}
}
如果你的数据量非常大,肯定会内存溢出
你不停的Element dom是把xml加载到内存中的,数据量一多内存就不够了,性能低下
建议你分页查询
然后通过Xstream等xml框架去生成xml
以上就是关于Java 如何遍历数组里面的数据全部的内容,包括:Java 如何遍历数组里面的数据、Java程序,多一次数据库查询,与循环相比,哪个性能更差、java如何循环查数据库同一张表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)