我有一个类类型列表,它按以下方式保存类类对象的值
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 - &gt; 如何在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
列表的所有值都不会因为else条件而显示,因为我必须将0
或null
添加到那些不满足上述条件的行中。该怎么做?
答案 0 :(得分:1)
1问题-1 - &gt; **如何在new_list.addAll(???)中添加与该索引对应的所有12列; **我是否必须在我放的位置添加列?
要仅将满足条件的对象添加到新列表中,您应该执行以下操作:
if (im > is && im < js) {
new_list.add(st_jsp.get(no));
}
方法addAll()
将一个集合中的所有元素添加到另一个集合中。因此,当您这样做时,第一次满足您的条件时,您将st_jsp
中的每个参考添加到new_list
。然后,每次调用new_list.addAll(st_jsp)
时,您都会继续重新添加元素。使用add()
将只添加您想要的对象。
2)问题-2
for(no=0;no<st_jsp.size();no++)
循环将持续到st_jsp
的大小,但如果我这样做,那么st_jsp
列表的所有值将不会显示,因为其他条件为I如果条件不满足上述那些行,请添加0
或null
。如何做到这一点
在满足else
条件时,您正在if
执行相同操作,即将st_jsp
中的所有元素添加到new_list
:< / p>
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());
}
}
内放置另一个循环循环。
{{1}}