我有一个类类型列表,它按以下方式保存类类型对象的值
public List<Vacc_vs6> refarray_vac1(String fdate,String ldate) throws SQLException, ParseException {
st_jsp.clear();
try {
con = getConnection();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
String vs1 = "sql query";
stmt.executeQuery(vs1);
rs = stmt.getResultSet();
while (rs.next()) {
Vacc_vs6 ref = new Vacc_vs6();
ref.setLogtime(rs.getString(1));
ref.setBeam_current(rs.getString(2));
ref.setBeam_energy(rs.getString(3));
ref.setst4_vs6_bag1_rb(rs.getString(4));
ref.setst4_vs6_bag2_rb(rs.getString(5));
ref.setst4_vs6_bag3_rb(rs.getString(6));
ref.setst4_vs6_bag4_rb(rs.getString(7));
ref.setst4_vs6_bag5_rb(rs.getString(8));
ref.setst4_vs6_bag6_rb(rs.getString(9));
ref.setst4_vs6_bag7_rb(rs.getString(10));
ref.setst4_vs6_bag8_rb(rs.getString(11));
ref.setst4_vs6_bag9_rb(rs.getString(12));
st_jsp.add(ref);
}
} catch (Exception e) {
System.out.println("\nException in refarray_vac1 " + e);
}
return st_jsp;
}
st_jsp 是列表。 现在我采用另一个类类型列表,并希望将值添加到它对应于列表 st_jsp 的每一列。我还想只在第二个列表中添加满足给定 if 条件的那些值,否则转到 else 并将 null 放在特定列。 为此,代码是-
List<Vacc_vs6> new_list=new ArrayList<Vacc_vs6>();
double is = 9.5;
double js = 10.5;
int no=0;
for (no=0;no<st_jsp.size();no++) {
String i= st_jsp.get(no).getBeam_current();
double im = Double.parseDouble(i) ;
if(im>is && im<js) {
new_list.addAll(st_jsp);
} else {
new_list.addAll(null);
}
is +=10;js +=10;
}
问题 1--> 如何在
new_list.addAll(???)
中添加与该索引对应的所有 12 列;我必须在我放的地方添加列吗?ref.setLogtime(rs.getString(1)); ref.setBeam_current(rs.getString(2));
问题 2
for(no=0;no<st_jsp.size();no++)
循环将一直持续到st_jsp
的大小但如果我这样做,那么st_jsp
的所有值由于其他条件,列表将不会显示,因为我必须添加0
或null
对于那些不满足上述 if 条件的行。为此要做什么?
最佳答案
1 Problem-1--> **how to add all the 12 columns corresponding to that index in new_list.addAll(???);**Did I have to add column where I put ??
要仅将满足条件的对象添加到新列表中,您应该这样做:
if (im > is && im < js) {
new_list.add(st_jsp.get(no));
}
方法addAll()
将一个集合中的所有元素添加到另一个集合中。因此,按照您的操作方式,第一次满足您的条件时,您将在 st_jsp
中添加每个引用至 new_list
.然后你会每次都重新添加元素 new_list.addAll(st_jsp)
叫做。使用 add()
将只添加您想要的对象。
2) Problem-2
for(no=0;no<st_jsp.size();no++)
loop will go till the size ofst_jsp
but if I do so then all values ofst_jsp
list will not be displayed because of else condition as I ahve to add0
ornull
to those rows whcih do not satisfy the above if condition.What to do for this
您在 else
中执行相同的操作if
时你在做什么满足条件,即把st_jsp
中的所有元素相加至 new_list
:
if (im > is && im < js) {
new_list.addAll(st_jsp);
} else {
new_list.addAll(st_jsp);
}
这意味着,在循环之后,您将以 st_jsp.size()
结束副本st_jsp
在new_list
.
如果需要在new_list
中添加一个所有字段都包含null的对象每当一个对象不满足你的条件时,你首先需要创建这个对象,然后在不满足条件时添加它。此外,如果您需要测试 st_jsp
中的每个元素如果它满足 is
的所有值的条件和 js
,您需要在 for
中放置另一个循环循环。
List<Vacc_vs6> new_list = new ArrayList<Vacc_vs6>();
for (int no=0; no < st_jsp.size(); no++) {
double is = 9.5;
double js = 10.5;
double im = Double.parseDouble(st_jsp.get(no).getBeam_current());
// flag to check if an element was added to new_list
boolean added = false;
while (is < 209.9 && js < 210.5) {
if (im > is && im < js) {
new_list.add(st_jsp.get(no));
added = true;
break;
}
is += 10;
js += 10;
}
if (!added) {
// If the element was not added, add an empty object,
// assuming that no field is set when creating the object.
new_list.add(new Vacc_vs6());
}
}
关于java - 如何迭代比java中列表指定的大小更多的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28986076/